在HTACCESS Rewrite中允许GET变量

时间:2011-05-23 14:33:55

标签: apache .htaccess mod-rewrite rewrite

现在我有一个重写规则,如下所示:

RewriteRule ^product-([a-z^-]+).php /sample.php?m=$1

如果我尝试使用“product-test.php”,它可以正常工作。

如果我尝试“product-test.php?variable = 1”,它将无效。

如何修改重写规则以允许GET变量?

注意:GET变量应该只允许字母(Aa-Zz)和破折号( - )。

1 个答案:

答案 0 :(得分:2)

我认为应该阅读

RewriteRule ^product-([A-Za-z\-]+).php /sample.php?m=$1&%{QUERY_STRING}

请注意反斜杠转义破折号。破折号是匹配部分中的运算符,因此必须对其进行转义。

此外,要将GET变量包含在重写的URL中而不重写它们,请将查询字符串标识符附加到末尾。

这将重写:

www.example.com/product-widget.php?variable=12

www.example.com/sample.php?m=widget&variable=12

我相信你的意思。

有人说,我不确定逃避破折号确实有效,因为我刚刚发现在我重写的网址中使用破折号的问题,我似乎无法解决。这就像Apache 1.3.33重写模块不喜欢重写字符串中的破折号。无论如何,这是它应该如何工作,它在我的服务器上工作。