.htaccess - 根据首选语言重定向到子文件夹

时间:2014-02-19 20:03:45

标签: apache .htaccess mod-rewrite redirect

我们有一个英文网站。现在我们希望用德语翻译这个网站。

index.html位于根文件夹中:www.mydomain.com/index.html

现在我要创建一个htaccess文件,将所有在浏览器中设置首选语言的用户重定向到德语(de,de-de,de-at,de-ch)到www.mydomain.com/de/ index.html的。所有其他用户应重定向到www.mydomain.com/en/index.html。

我尝试了很多,但我无法让它发挥作用。我真的不明白正则表达式的东西和它的用法。 大多数尝试最终都出现错误403或500.当前的htaccess不会以错误结束,但它不起作用。

htaccess现在是:

Options -Indexes +FollowSymLinks 

RewriteEngine On

RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^/(.*)$ /de/$1 [L] 

RewriteRule ^/(.*)$ /en/$1 [L]

好像文件根本不起作用。当我打开www.mydomain.com时,它会打开www.mydomain.com/index.html

Htaccess和重写工作一般:

RewriteRule ^(.*)$ http://www.google.com/ [R=301,L]

作品。

如果我删除^

后面的斜杠
RewriteRule ^(.*)$ /en/$1 [L]

我收到错误500.

我做错了什么?

我实际上希望服务器重定向到用户尝试打开的网页。因此,如果用户打开mydomain.com/index2.html,则应将其重定向到mydomain.com/xx/index2.html(而不是index.html)

有什么想法吗?

谢谢,

雅罗斯瓦夫

1 个答案:

答案 0 :(得分:0)

您可以使用此规则:

Options -Indexes +FollowSymLinks 

RewriteEngine On

RewriteRule ^(en|de)/ - [L,NC]

RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^(.*)$ /de/$1 [L] 

RewriteRule ^(.*)$ /en/$1 [L]