[英]Incorrect redirection from .htaccess
我想将所有non-www
和所有non-https
重定向到https://www
URL。
我有一个.htaccess,其中包含以下代码:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI}$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}$1
这适用于根路径:
OK https://www.mywebsite.com => https://www.mywebsite.com
OK http://mywebsite.com => https://www.mywebsite.com
OK https://mywebsite.com => https://www.mywebsite.com
OK http://www.mywebsite.com => https://www.mywebsite.com
但是当我尝试进入子文件夹时,有(一种)错误:
OK https://www.mywebsite.com/tmp => https://www.mywebsite.com/tmp
KO https://mywebsite.com/tmp => https://www.mywebsite.com/tmp/tmp
KO http://www.mywebsite.com/tmp => https://www.mywebsite.com/tmp/tmp
KO http://mywebsite.com/tmp => https://www.mywebsite.com/tmp/tmp
如您所见,该子文件夹再次被附加,并且显示404错误。
我该如何修正.htaccess规则以获得预期的重定向?
非常感谢你
问题是%{REQUEST_URI}$1
使用,它在REQUEST_URI
的末尾添加捕获的值(即URI)。
另外,作为一种优化,您可以将两个规则合并为一个规则,如下所示:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC,OR]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [R=301,L,NE]
在测试此更改之前,请确保清除浏览器缓存。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.