2012-05-11 28 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

相关问题