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 中弹出