2014-02-19 55 views
1

我們有一個英文網站。現在我們想用德文翻譯一下這個網站的翻譯版本。.htaccess - 根據首選語言重定向到子文件夾

中的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)。

任何想法?

感謝,

雅羅斯瓦夫

回答

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] 
+0

你怎麼能輸入這麼快? :)現在我得到一個空白頁。 –

+0

嘗試更新的代碼,並在Firebug中測試以查看您獲得的http狀態。 – anubhava

+0

同樣的問題。 Firebugs說200 OK並顯示一個空白的html文檔。 –