我正在尝试创建具有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]
一切正常。
有什么问题?我怎样才能让这些东西一起工作?
答案 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]