我遇到了以下问题
我有一个多语言页面,其中包含以下网址格式:
foo.bar/foo
foo.bar/en/foo
foo.bar/de/foo
foo.bar/ru/foo
依旧......
由于我的默认语言是英语,因此我有重复的内容问题,因为
foo.bar/foo
foo.bar/en/foo
具有相同的内容
所以我不是.htaccess亲,我可以通过为每个网址重写条件来解决它:
RewriteCond %{HTTP_HOST} ^www.foo.bar$ [NC]
RewriteRule ^/foo /en/foo [R=permanent,L]
但我更喜欢的是一些通用的解决方案表达式,如:
if((first part after "/") != ("en/$" || "de/$" || "ru/$") {
add "en/$"
}
以便foo.bar
重定向到foo.bar/en
和foo.bar/bla/blu/ble
重定向到foo.bar/en/bla/blu/ble
更新:
使用
RewriteCond %{HTTP_HOST} ^(www\.)?foo\.bar$ [NC]
RewriteCond %{REQUEST_URI} !^/(en|de|ru)/ [NC]
RewriteRule ^ /en/%{REQUEST_URI} [L,NE,R=302]
无限重定向到:
http://www.foo.bar/en//app.php
所以我猜它在ifmodule的最底部碰到了一些rewriterule 这似乎剥离了前控制器(app.php),继承代码:
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]
答案 0 :(得分:1)
您可以在DOCUMENT_ROOT/.htaccess
文件中使用此代码:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?foo\.bar$ [NC]
RewriteCond %{THE_REQUEST} !\s/(en|de|ru)/ [NC]
RewriteRule ^ /en/%{REQUEST_URI} [L,NE,R=302]