我的Web服务器发生了最奇怪的事情。 这是Apache 2的SSL。 为了简化,这是为什么我的configuration看起来像(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>
实质上,它所做的是将所有非httpsstream量redirect到https,并将www.example.comredirect到example.com – 到目前为止,这么好。
这适用于所有平台上的所有浏览器 – 有一个例外:iPad上的Safari。 在Mac上Safari浏览器正常工作; iPad上的其他浏览器工作正常,但在iPad上的Safari我得到“Safari浏览器无法打开页面,因为太多的redirect发生”。
现在,我在我的设置(https)上唯一的redirect是从www.example.com到example.com。 我将%{Host}i添加到访问日志中 – 我可以看到请求中包含正确的主机名和资源。
在这一点上,我完全难倒了。 我不知道在哪里或者在看什么。 我的客户主要使用ipad公司,所以忽略它不是一个选项。
任何想法,不胜感激。
编辑:
我将SSLconfiguration更改为:
<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>
现在在configuration中根本没有redirect。 我清除了iPad上的所有设置,历史logging和存储的数据 – 而且还在redirect!
好的,互联网+1,苹果-1。
罪魁祸首是Apache 2.2上的mod_spdy 。 我不知道什么或如何或为什么,但禁用mod_spdy解决了这个问题。
我不喜欢这样离开,但暂时没有select。
你可以在你的服务器上尝试这个configuration吗?
<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块。