所以我在使用.htaccess文件时遇到了麻烦。这是我的代码:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
它首先从非www重定向到www,然后从非https重定向到https但是它有问题,当转到:
https://example.com
即:使用https而不是www,它会将我重定向到一个巨大的链接,例如:
https://www.example.com/home/c3238912/public_html/httpss://www.example.com/home/c3238912/public_html/httpss://www.example.com/home/c3238912/public_html/httpss://www.example.com/home/c3238912/public_html/
怎么可能这样呢?
答案 0 :(得分:0)
您是否复制了https重定向中的s
但忘了在此处提及?
您的示例在重定向路径中显示httpss
。这样的拼写错误会导致此问题,因为httpss
协议不存在,它被视为路径,因此无限重定向。
我的理解是你真正的规则是:
RewriteRule ^(.*)$ httpss://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
删除额外的s
,就像您在问题中显示一样。
如果你之前有过拼写错误,但要更正它,请确保清空缓存。重定向 缓存。
答案 1 :(得分:0)
在我看来,它正在多次运行你的第二个Redirect。您可以连接它们,而不是将规则拆分,这样可以帮助修复多个重定向。
尝试使用:
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302]
我已将R
标志更改为302,这使其成为临时重定向以进行测试。如果您发现此规则有效,则将其更改回301以进行永久重定向。
确保在测试之前清除缓存。