.htaccess为商店添加语言支持

时间:2012-05-29 20:10:05

标签: .htaccess rewrite multilingual

我正在尝试创建具有RewriteRules的多语言商店,如下所示:

    RewriteCond %{REQUEST_FILENAME} -f [NC,OR]
    RewriteCond %{REQUEST_FILENAME} -d [NC,OR]
    RewriteCond %{REQUEST_FILENAME} -l [NC]
    RewriteRule .* - [L]
    RewriteRule .*[^/]$                 $0/ [R=301]

    RewriteCond %{HTTP_HOST} ^(www\.)?example\.com\$
    RewriteRule ^(.*)$       $1?language=en [QSA]

    RewriteRule ^catalog/product/([^/]*)/$      catalog/index.php?id=$1  [L,QSA]
    RewriteRule ^catalog/([^/]*)/$          catalog/index.php?category=$1  [L,QSA]

尝试访问http://example.com/catalog/product/111/时,这些规则不起作用 或http://example.com/catalog/category/

但是当我删除

    RewriteCond %{HTTP_HOST} ^(www\.)?example\.com\$
    RewriteRule ^(.*)$       $1?language=en [QSA]

一切正常。

有什么问题?我怎样才能让这些东西一起工作?

1 个答案:

答案 0 :(得分:0)

您需要切换规则的顺序,并删除其中一些规则的L标志。这应该有效:

RewriteRule ^catalog/product/([^/]*)/      catalog/index.php?id=$1  [QSA,S=1]
RewriteRule ^catalog/([^/]*)/          catalog/index.php?category=$1  [QSA]

RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
RewriteRule ^(.*)$       $1?language=en [QSA]