2012-03-19 95 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