Htaccess重写网址并从网址

时间:2017-03-31 10:47:07

标签: .htaccess redirect mod-rewrite https

您好我正在尝试执行以下操作。

当通过http访问域时,它应该重定向到https。 当域包含www时,它应该重定向到https 当域包含语言缩写时,它应将其删除。

可能的网址:

1:http://www.example.com/en/how-did-it-all-start

2:http://example.com/en/how-did-it-all-start

3:http://www.example.com/how-did-it-all-start

这些域应该重定向,其中一个301重定向到 https://example.com/how-did-it-all-start

当我尝试将它与www结合使用时,我尝试了很多东西但没有任何接缝可以工作。它现在只适用于http网址,当我添加www时,它会中断。

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteCond %{REQUEST_URI} ^en/(.*)$ [NC]
RewriteRule ^ https://%1%/%2% [R=301,L]

我不知道如何在不破坏条件的情况下将它们正确地组合在一起。 试图以不同的方式做,但直到现在都没有成功。 任何帮助将不胜感激。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您需要在条件中使用[OR]子句与可选匹配来处理所有3种情况:

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