.htaccess将没有语言子文件夹的域重定向到语言子文件夹

时间:2018-05-02 09:56:03

标签: .htaccess redirect mod-rewrite

我有一个像这样的域名" domain.com",现在我创建语言的子文件夹。 现在我的域名有这个子文件夹" domain.it/it /"和" domain.com/en /"。 我只需要重定向根域" domain.it" to" domain.com/it/,我尝试在我的.htaccess中执行此操作,但它进入"太多重定向":

RewriteCond %{HTTP_HOST} ^(www\.)?domain.it$ [NC]
RewriteRule ^(.*) https://www.domain.it/it/ [R=301,L]

而且:

RewriteCond %{REQUEST_URI} !^/(en|it)/
RewriteRule ^(.*)$ https://www.domain.it/it/ [L,R=301]

我该怎么做? 感谢

1 个答案:

答案 0 :(得分:0)

第一条规则+条件始终匹配,因此导致无限循环。在这种情况下,您只需要一条规则:

RewriteRule ^(?!(?:it|en)/).* https://www.domain.it/it/$0 [L,R=301]

这使用具有非捕获子模式的负前瞻断言。不过,我建议您添加另一条规则(之前那条规则)以帮助手动输入/复制不当的网址:

RewriteRule ^(?:it|en)$ https://www.domain.it/$0/ [L,R=301]