2012-03-19 91 views
0

對於多語言站點,我使用以下代碼自動將人員重定向到正確的頁面。這很好,但不包括樣式表和其他文件。.htaccess語言重定向排除

如果訪問者來自法國,.htaccess中的以下代碼將www.site.com變爲www.site.com/fr。但它也重定向樣式表和其他文件。

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

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

RewriteCond %{REQUEST_URI} !(^/.*) [NC] 
RewriteRule ^(.*)$ /$1 [L,R=301] 

www.site.com/css/style.css變成不存在 www.site.com/js/file.js www.site.com/fr/css/style.css變成不存在的www.site.com/fr/js/file.js

有沒有辦法創建一個自動重定向,但排除整個子目錄?例如,exclude/css/和/ js/

回答

0

您可以使用

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

,使得存在請求的文件和目錄將不會被改寫

+0

謝謝。這對www.site.com/directory/page.php會有什麼影響,因爲它確實存在,如果法國某人訪問它,則需要訪問www.site.com/fr/directory/page.php – Lisa 2012-03-19 10:46:46

+0

right,in這種情況下只需添加'RewriteCond%{REQUEST_URI}!(^/css /.*)'和'RewriteCond%{REQUEST_URI}!(^/js /.*)' – scibuff 2012-03-19 10:51:45

+1

這會使新代碼變爲:RewriteCond%{ HTTP:Accept-Language} ^(fr。*)[NC] RewriteCond%{REQUEST_URI}!(^/fr /.*)[NC] RewriteCond%{REQUEST_URI}!(^/css /.*) RewriteCond %{REQUEST_URI}!(^/js /.*) RewriteRule ^(。*)$/fr/$ 1 [L,R = 301] RewriteCond%{REQUEST_URI}!(^ /。*)[NC] RewriteRule ^(。*)$/$ 1 [L,R = 301] – Lisa 2012-03-19 10:59:40