您好我正在尝试执行以下操作。
当通过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]
我不知道如何在不破坏条件的情况下将它们正确地组合在一起。 试图以不同的方式做,但直到现在都没有成功。 任何帮助将不胜感激。
提前致谢。
答案 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]