1

我有一个只影响谷歌浏览器的问题。我有两个子目录secure.fixnode.ca和storage.fixnode.ca,这两个子目录都需要使用https协议。

我在 Google Chrome 中遇到的错误是:“重定向循环错误,重定向太多”

storage.fixnode.ca在谷歌浏览器中可以正常工作,但由于某种原因,secure.fixnode.ca不能。

此外,这两个子目录在其他所有浏览器(IE、FF、Safari)中都运行良好。

下面是我的 .htaccess 文件:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^fixnode\.ca$ [NC]
RewriteRule ^.*$ http://www.fixnode.ca%{REQUEST_URI} [R=permanent,L]

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(secure|storage)\. [NC]
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

# END OF CHANGE
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^\.]+)/$ $1.php

ErrorDocument 401 /?loc=401error.php
ErrorDocument 404 /?loc=404error.php

Options -Indexes

给我带来麻烦的行是:

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

谷歌浏览器似乎将 apache https 重定向视为重定向错误。

有谁知道我是否可以在谷歌浏览器和其他浏览器中以任何其他方式执行此操作?

任何帮助表示赞赏

谢谢,菲利普·K

4

1 回答 1

1

从您的情况来看,您的 https 重定向似乎进入了无限重定向循环。我有理由相信 %{HTTPS} 变量并没有应有的稳定(我见过其他人对此有问题)。

尝试更改 %{HTTPS} 条件:

RewriteCond %{HTTPS} off

到:

# If not port 443 (https) then this condition should match
RewriteCond %{SERVER_PORT} !^443$

替代方案是:

RewriteCond %{SERVER_PORT} ^80$

和..

RewriteCond %{REQUEST_SCHEME} ^http$
于 2013-02-23T10:40:40.507 回答