在 ReWrite 规则中传递 ?

在 ReWrite 规则中传递 ?

我正在使用这个 -

重写规则 ^/one/([a-zA-Z-]+)/(two|TWO)/(three|THREE)/([a-zA-Z0-9()-.\?\=]*)/?$ /city/city-search.php?c=$1&t=$2&pf=$3&iptnr=$4

我正在调用 - www.winsoftwares.net/one/pune/two/three/index.php?ptnr=xyz 并想访问 city-search.php 中的变量,如... one、pune、two、three 和 ptnr 值

但是在 (index.php?ptnr=xyz) 中找到字符串“?”会中断....请帮助我

http://www.winsoftwares.net无法重定向此...

答案1

我认为没有办法一次性检查包括参数在内的整个 URL。您需要使用 QUERY_STRING 单独检查 ? 后面的任何内容,例如
RewriteCond %{QUERY_STRING} ^param=blah(.*) [NC]

答案2

您必须转义,?因为它是正则表达式中的特殊字符。

因此不要使用?try\?

答案3

通常,您不会在匹配模式中包含 QUERY STRING。然后,您只需将 %{QUERY_STRING} 添加到重写规则中。示例:

RewriteRule  ^/(articles)/([-a-z]+)-([0-9]+)/$  /index.php?cat=$1&id=$3&rewrite=$2&%{QUERY_STRING}

Apache 文档写道:

注意:查询字符串

模式不会与查询字符串匹配。相反,您必须使用带有 %{QUERY_STRING} 变量的 RewriteCond。

相关内容