我最近开始将我的域重定向到https
,我在Safari上遇到“太多重定向”错误,特别是在移动设备上。在任何计算机和任何其他浏览器中一切正常。
以下是我完成重定向的方法。
主域名RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://example\.com%{REQUEST_URI} [R=301,L,NE]
我还禁用了Cloudflare,因为它导致我的SSL出现问题,我修复了DNS传播的一些问题。
修改
它会影响除计算机以外的所有Safari浏览器,并且删除缓存无法解决问题。我只有一个域名,但有一些子域名。
我在.htaccess中有其他指令:
RewriteCond %{HTTP_HOST} ^example.com$ [OR]
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule ^folder\/?(.*)$ "http\:\/\/example\.com\/all\-categories\/folder\/$1" [R=301,L]
编辑:已解决
更改主机为我解决了这个问题。
答案 0 :(得分:0)
.cbr
由于您将所有内容重定向到RewriteRule ^folder\/?(.*)$ "http\:\/\/example\.com\/all\-categories\/folder\/$1" [R=301,L]
,因此您也应该在上面的重定向中执行此操作。否则你将最终得到额外的(不必要的)重定向。所以这应该改写为:
https
我还整理了正则表达式和替换(这看起来像cPanel会生成的东西?)。 RewriteRule ^folder/?(.*) https://example.com/all-categories/folder/$1 [R=301,L]
替换中不需要所有反斜杠转义(和双引号)。而RewriteRule
模式中的反斜杠转义也是多余的。
然而,我怀疑这是否足以满足Safari(移动)。 (?)
答案 1 :(得分:0)
当您使用CloudFlare的灵活SSL时; Web服务器可能无法正确识别连接何时应该通过SSL以及何时不应该。
因此你应该尝试install Mod_CloudFlare on your webserver来解决这个问题,如果你不能这样做,你可以改为从Apache .htaccess中的X-Forwarded-Proto头设置你的SSL环境变量:
SetEnvIf X-Forwarded-Proto https HTTPS = on
答案 2 :(得分:0)
我使用以下方法修复它
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond%{HTTPS} off
导致错误。使用
RewriteCond%{SERVER_PORT}!^ 443 $
修复它。