iPhone Safari/Chrome 上的重定向过多

Posted

技术标签:

【中文标题】iPhone Safari/Chrome 上的重定向过多【英文标题】:Too many redirects on iPhone 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 时才会出现......为什么?

【问题讨论】:

【参考方案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 工作 :)

以上是关于iPhone Safari/Chrome 上的重定向过多的主要内容,如果未能解决你的问题,请参考以下文章

safari/chrome iphone中的动画速度没有变化

移动 Safari/Chrome 上的 Angular 应用程序中出现严重的键盘延迟

处理 Safari/Chrome 上的“取消”按钮,以便在 App Store 中弹出

与 Safari/Chrome 相比,相同 URL 的 UIWebView 行为不同

我需要撤消重定向插件完成的重定向 URL

如何使用 Javascript 在移动 Safari 和所有其他浏览器上录制音频?