Apache-2.2

僅適用於 Safari iPad 的奇怪重定向

  • February 14, 2016

我的網路伺服器發生了最奇怪的事情。它是帶有 SSL 的 Apache 2。為簡化起見,這就是為什麼我的配置看起來像這樣(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.comexample.com- 到目前為止,非常好。

這適用於所有平台上的所有瀏覽器——只有一個例外:iPad 上的 Safari。mac 上的 Safari 執行良好;ipad 上的其他瀏覽器工作正常,但在 ipad 上的 Safari 上我得到“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。

罪魁禍首是mod_spdyApache 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 塊。

引用自:https://serverfault.com/questions/709305