У меня есть самая странная вещь, происходящая с моим веб-сервером. Это - Apache 2 с SSL. Для упрощения вот то, почему моя конфигурация похожа (example.com относится к моему собственному домену, конечно):
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
Redirect 301 / https://example.com/
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
DocumentRoot /var/www/example
... #options and allow/deny for directories
... #logging settings
SSLEngine on
... #ssl settings
</VirtualHost>
<VirtualHost *:443>
ServerName www.example.com
Redirect 301 / https://example.com/
SSLEngine on
... #ssl settings
</VirtualHost>
По существу то, что это делает, перенаправить весь нетрафик HTTPS к https и перенаправлениям www.example.com
кому: example.com
- пока неплохо.
Это работает на все браузеры на всех платформах - за одним исключением: Safari на iPad. Safari на Mac хорошо работает; другие браузеры на iPad хорошо работают, но на Safari на iPad я получаю "Safari, не может открыть страницу, потому что слишком много перенаправлений произошли".
Теперь, единственное перенаправление, которое я имею в своей установке (на https) от www.example.com до example.com. Я добавил %{Host}i
к журналу доступа - и я вижу, что запросы содержат корректное имя хоста и ресурс.
В этой точке я полностью озадачен. Я не знаю, где или что еще посмотреть на. Мой клиент главным образом использует iPad, так игнорирование, это не опция.
Любые идеи значительно ценятся.
Править:
Я изменил конфигурацию SSL на это:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
Redirect 301 / https://example.com/
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example
... #options and allow/deny for directories
... #logging settings
SSLEngine on
... #ssl settings
</VirtualHost>
Теперь нет никаких перенаправлений в конфигурации вообще. Я очистил все настройки, историю и хранил данные от iPad - и это все еще перенаправляет!
Хорошо, +1 для Интернета, -1 для Apple.
Виновником был mod_spdy
на Apache 2.2. Я не знаю, что, как и почему, но отключение mod_spdy решило проблему.
Я не очень рад оставить это так, но у меня пока нет выбора.
Можете ли вы попробовать эту конфигурацию на своем сервере?
<VirtualHost *:443>
ServerName www.example.com
ServerAlias *.example.com
Redirect 301 / example.com/
DocumentRoot /var/www/example
... #options and allow/deny for directories
... #logging settings
SSLEngine on
... #ssl settings
</VirtualHost>
Вы можете исключить последний блок VirtualHost.