,因此我的网站项目之一与HTTPS有问题。当我在桌面铬/opera/firefox上打开它时,它可以正常工作,但是在iPhone Safari/chrome上,它会使我返回错误"重定向太多"。这仅在iPhone上发生。这是.htaccess
文件内容,应将HTTP重定向到HTTPS,然后www www为nonwww(它在文件的顶部,整个文件中没有重定向数据):
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?因为当我从文件中删除重写时,它会毫无问题地加载。
首先,我仅在Safari上尝试。我删除了互联网历史记录和饼干 - 没有帮助。我下载了新鲜的铬,也发生了同样的问题。因此,我的问题仅在https上发生...为什么?
只需使用[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,以使用HTTPS并删除www
。
确保在测试之前清除缓存。
我通过使用以下方法
修复了它RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]