.htaccess文件中的简单多个产品链接不起作用

时间:2010-06-29 06:03:25

标签: apache .htaccess mod-rewrite

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([a-zA-Z0-9_-]+)\.html$ product.php?pid=$1&rewrite=1&%{QUERY_STRING} [L,QSA,NC]

RewriteCond %{REQUEST_FILENAME} !-f 

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([a-zA-Z0-9_-]+)\.html$ product2.php?cid=$1&rewrite=1&%{QUERY_STRING} [L,QSA,NC]

RewriteCond %{REQUEST_FILENAME} !-f 

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([a-zA-Z0-9_-]+)\.html$ product3.php?bid=$1&rewrite=1&%{QUERY_STRING} [L,QSA,NC]

无法访问product2.php或product3.php文件...

请帮忙......

1 个答案:

答案 0 :(得分:0)

您的所有RewriteRule正则表达式都是相同的,因此它只会在第一次匹配时将URL转换为product.php?pid=$1&rewrite=1&%{QUERY_STRING} [L,QSA,NC],然后不执行任何操作(L标志指定它将不再匹配该运行的任何规则,然后在将URL重写为product.php后,product.php将无法与下一次传递中的任何其他规则匹配。

此外,如果您传递&%{QUERY_STRING}标记,则无需添加QSA,因为这会自动将查询字符串附加到从RewriteRule获取的已修改查询字符串。

我知道您希望它能够访问其他两个页面,但您需要描述哪些输入网址应映射到每个特定文件,以便任何人能够为您提供更多帮助。