Apache-2.2
僅適用於 Safari iPad 的奇怪重定向
我的網路伺服器發生了最奇怪的事情。它是帶有 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.com
到example.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_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 塊。