htaccess将子文件夹重定向到root并强制https

时间:2018-03-29 16:31:20

标签: .htaccess

我尝试将包含子文件夹的所有网址重定向到根目录,但也强制使用https和www 所以,例如,我想重定向:

example.com/shop/category/product
www.example.com/shop/category/product
example.com/SHOP/category/product

我已尝试过以下代码

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

但是这并没有重定向子文件夹,如果我将子文件夹添加为先前的规则,如

RewriteRule ^shop/(.*)$ /$1 [R=301,NC,L]

它只是不起作用。

有一点需要指出 - 我还必须确保对网站的任何其他请求(包含或不包含子文件夹)都被重定向到https www版本。

有人能指出我正确的方向还是帮我解决这个问题? TIA

1 个答案:

答案 0 :(得分:0)

您可以在 .htaccess 顶部使用此单一规则进行此重定向:

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\. [NC,OR]
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{REQUEST_URI} ^/shop/ [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^(?:shop/)?.*$ https://www.%1/$0 [R=301,L,NC,NE]

# rest of your rules go below

确保清除浏览器缓存或使用新浏览器进行测试。