0

我正在尝试创建具有 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]

一切正常。

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

4

1 回答 1

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]
于 2012-05-29T20:15:39.373 回答