现在我有一个重写规则,如下所示:
RewriteRule ^product-([a-z^-]+).php /sample.php?m=$1
如果我尝试使用“product-test.php”,它可以正常工作。
如果我尝试“product-test.php?variable = 1”,它将无效。
如何修改重写规则以允许GET变量?
注意:GET变量应该只允许字母(Aa-Zz)和破折号( - )。
答案 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重写模块不喜欢重写字符串中的破折号。无论如何,这是它应该如何工作,它在我的服务器上工作。