htaccess重定向(multidomain multilanguage)子文件夹通配符

时间:2015-02-20 11:23:00

标签: .htaccess internationalization

我有一个多域和多语言的typo3安装,并不是每个域都设置了每种语言。

语言 de/fr/en/pt/es/cn/

www.example.de可以是de/en/fr但不是
www.example.de pt/es/cn

现在我搞砸了......和谷歌索引了大量错误的网址,例如

www.example.de/pt/
www.example.de/es/
www.example.de/cn/

他们指向未为此域设置的语言

我正在摆弄htaccess,将带有通配符(?)的错误网址重定向到.tld

我正在寻找解决方案重定向,例如。

www.example.de/pt/* to www.example.de/
www.example.de/es/* to www.example.de/
www.example.de/cn/* to www.example.de/

其中*应表示语言参数后面的完整sting / path。

导致.com域名

的程序相同
www.example.com/fr/* to www.example.com/
www.example.com/de/* to www.example.com/

我上下搜索网页,但我没有尝试过任何工作 任何帮助都会高度赞成。






进一步的一小步

RewriteCond %{HTTP_HOST} ^www.example.de
RewriteRule ^cn/(.*)$ http://www.example.de/ [L,R=301]
RewriteRule ^pt/(.*)$ http://www.example.de/ [L,R=301]
RewriteRule ^es/(.*)$ http://www.example.de/ [L,R=301]

这似乎有用

现在是第二个域,因为我需要区分.com和.de

RewriteCond %{HTTP_HOST} ^www.example.com
RewriteRule ^de/(.*)$ http://www.example.com/ [L,R=301]
RewriteRule ^fr/(.*)$ http://www.example.com/ [L,R=301]

这现在会中断www.example.de/fr/whatever并将其重定向到www.example.com

所以看起来第一个条件是匹配的,最后一个规则适用于法语。

如何限制仅将其分配给适当的域条件的规则?

1 个答案:

答案 0 :(得分:0)

好的看起来每个条件和相应的规则都需要在一行中重复写入

RewriteCond %{HTTP_HOST} ^www.example.de
RewriteRule ^cn/(.*)$ http://www.example.de/ [L,R=301]
RewriteCond %{HTTP_HOST} ^www.example.de
RewriteRule ^pt/(.*)$ http://www.example.de/ [L,R=301]
RewriteCond %{HTTP_HOST} ^www.example.de
RewriteRule ^es/(.*)$ http://www.example.de/ [L,R=301]

RewriteCond %{HTTP_HOST} ^www.example.com
RewriteRule ^de/(.*)$ http://www.example.com/ [L,R=301]
RewriteCond %{HTTP_HOST} ^www.example.com
RewriteRule ^fr/(.*)$ http://www.example.com/ [L,R=301]

这似乎有效。

非常感谢任何更好的解决方案