【问题标题】:Too many redirects on iPhone Safari/ChromeiPhone Safari/Chrome 上的重定向过多
【发布时间】:2017-09-22 14:44:41
【问题描述】:

所以我网站的一个项目存在 HTTPS 问题。当我在桌面 Chrome/Opera/Firefox 上打开它时,它工作正常,但在 iPhone Safari/Chrome 上它返回错误“重定向太多”。这只发生在 iPhone 上。这是.htaccess文件内容,它应该将http重定向到https,将www重定向到非www(它在文件的顶部,整个文件中没有重定向数据):

RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

为什么我注意到 HTTPS?因为当我从文件中删除 RewriteRule 时,它​​会毫无问题地加载。

首先我只在 Safari 上尝试过。我删除了互联网历史记录和 cookie - 没有帮助。我下载了新的 Chrome 并出现了同样的问题。所以我的问题只有在启用 HTTPS 时才会出现......为什么?

【问题讨论】:

    标签: ios iphone .htaccess google-chrome safari


    【解决方案1】:

    只需使用[OR] 标志将重定向合并为一个:

    RewriteEngine On
    RewriteCond %{HTTPS} !=on [OR]
    RewriteCond %{HTTP_HOST} ^www\. [NC]
    RewriteRule ^(.*)$ https://example.com%{REQUEST_URI} [R=301,L]
    

    这结合了您的规则,应该会阻止服务器抛出太多重定向错误。第一个条件检查 HTTPs 是否打开,第二个条件检查 www 是否存在。

    如果其中任何一个条件失败,它将使用 301 重定向重写 URL 以使用 HTTPS 并删除 www

    确保在测试之前清除缓存。

    【讨论】:

    • 我试过了,结果还是一样 :(你可以看网站:wcbidet.eu(现在有你的建议,我改了example.com)
    【解决方案2】:

    我通过以下方法修复了它

    RewriteCond %{SERVER_PORT}  !^443$
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    

    【讨论】:

    • 我目前的情况是RewriteCond %{SERVER_PORT} 80,这几乎是一样的:)
    • 我的意思是 %{SERVER_PORT} 将代替 %{HTTPS} 工作 :)
    猜你喜欢
    • 1970-01-01
    • 2014-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多