我的 Web 服务器出现了最奇怪的问题。它是带 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,苹果-1。
罪魁祸首是mod_spdy
Apache 2.2。我不知道是什么原因,如何原因,但禁用 mod_spdy 解决了这个问题。
我非常不愿意就这样离开,但是暂时我别无选择。
答案2
您可以在您的服务器上尝试此配置吗?
<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 块。