因此,我的某个网站项目存在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并且出现了同样的问题。所以我的问题只发生在...上为什么?为什么?
答案 0 :(得分:0)
使用[OR]
标志将重定向合并为一个:
RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^(.*)$ https://example.com%{REQUEST_URI} [R=301,L]
这结合了您的规则,应该阻止服务器抛出太多重定向错误。第一个条件检查HTTP是否未打开,第二个条件检查是否存在www
。
如果其中任何一个条件失败,它将使用301重定向重写URL以使用HTTP并删除www
。
确保在>>测试之前清除缓存。
答案 1 :(得分:0)
我使用以下方法修复它
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]