Htaccess重写规则麻烦

时间:2010-11-28 00:11:57

标签: .htaccess mod-rewrite

我遇到麻烦让我的重写规则正常工作..

ErrorDocument 404 /404.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^companies/
RewriteRule ^companies\/\?(.*)([A-Za-z]+) index.php?cpy=$1 [R=301,L,NC] 

RewriteRule ^([0-9]+)/?$ index.php?cid=$1 [L]
RewriteRule ^([A-Za-z_]+)/?$ index.php?cat=$1 [L]

重写规则 domain.com/123 domain.com/abc 似乎工作正常,

但另一个我无法上班的是 domain.com/companies/?list=this

似乎apache找不到匹配

RewriteRule ^companies\/\?(.*)([A-Za-z]+) index.php?cpy=$1 [R=301,L,NC] 

任何人都可以帮我弄清楚该规则有什么问题吗?或者如果是别的什么?

1 个答案:

答案 0 :(得分:0)

RewriteRule与查询字符串不匹配。

您可以使用RewriteCond匹配它们,参数化匹配显示为%1, %2等。

例如

RewriteCond %{QUERY_STRING} ^(.*)([A-Za-z]+)$
RewriteRule ^companies\/ index.php?cpy=%1 [R=301,L,NC]