2012-05-11 67 views
0

目前我已將以下代碼添加到.htaccess。此代碼檢測瀏覽器的語言和西班牙遊客轉發到/ ES/RewriteCond HTTP:Accept-Language所有子文件夾

當用西班牙語訪問mysite.com用戶會被自動發送到mysite.com/es/

RewriteEngine On 
RewriteCond %{HTTP:Accept-Language} ^(es.*) [NC] 
RewriteCond %{REQUEST_URI} !(^/images/.*) 
RewriteCond %{REQUEST_URI} !(^/es/.*) [NC] 
RewriteRule ^(.*)$ /es/$1 [L,R=301] 

這工作得很好,但不適用於子文件夾。例如,如果同一用戶訪問mysite.com/page/,他們不會發送到mysite.com/es/page/

如何更改代碼以便適用於所有子文件夾?

喜歡的話是可能的,如果你訪問site.com/page/test/你將被自動重定向到www.site.com/page/test/然而,這樣的事情確實以www重定向

rewriteCond %{HTTP_HOST} !site.com 
rewriteRule ^(.*)$ site.com/$1 [R=301,L] 

似乎無法使用語言從www.site.com/page/test/轉到www.site.com/es/page/test/

回答

0

如果您的佈局如此,以至於存在包含內容的子文件夾,而不是web應用程序,那麼你將需要在每個子文件夾中有這樣一個.htaccess文件。放置在es目錄中的相同文件應該能夠實現。

至於區分西班牙語和西班牙語和祕魯西班牙語,你可以嘗試es-ES和es-PE。

+0

謝謝。有超過1000個子文件夾(每個頁面/文章)的博客將是一項不可能完成的任務。 – Lisa

+0

在這種情況下,請嘗試將這些規則放在主Apache配置文件中,例如httpd.conf或/ etc/apache2/sites-available/default。 – Ansari

+0

有沒有辦法做到這一點沒有root權限?我希望可以在.htaccess中對RewriteCond%{HTTP:Accept-Language}進行說明,並將所有子文件傳遞給root和所有子文件夾。喜歡它可能與www重定向 rewriteCond%{HTTP_HOST}!site.com rewriteRule ^(。*)$ http://www.site.com/$1 [R = 301,L]如果您訪問site.com/頁面/測試/您將自動重定向到www.site.com/page/test/然而,類似這樣的東西似乎不適用於從www.site.com/page/test/到www.site.com的語言/ es/page/test/ – Lisa

相關問題