我正在使用这个 -
重写规则 ^/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。