.htaccess - 带有查询字符串的rewritecond,但是当我从干净的url提交一个新的查询时,它只是用旧的查询字符串附加 url

  显示原文与译文双语对照的内容

这是我的重写规则和条件


#link ReWrite
RewriteRule ^searchresults/([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)$/searchresults.php?search=1&year_search_type=single&isused=$1&year=$2&make=$3&model=$4&price=$5 [L]

#query Rewrite
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule. * - [L]
RewriteCond %{REQUEST_URI} ^/searchresults.php [NC]
RewriteCond %{QUERY_STRING} ^.*[&]?isused=(w+).*&year=(w+).*&make=(w+).*&model=(w+).*&price=(w+).*$ [NC]
RewriteRule./searchresults/%1/%2/%3/%4/%5? [R=301,L]

情况- 我有一个搜索页面,搜索数据库并显示结果。 这里安装程序捕获查询并将它的重写为干净 url ( awesome ),但是如果第二次运行查询,则将 key=value& key=value添加到干净 url 。

searchresults.php? make=value& model=value转换为 searchresults/value/value,我希望它可以

但是当我从 searchresults/value/value 运行第二个查询时,它最终变成了
/searchresults/value/value?make=value&model=value

任何失败的方法都是在,中,但我真的不能找到这个东西,因这里编辑php不在卡片中。

另外,如果有人可以告诉我什么编辑,这样当查询发送一个看起来像key=value+with+spaces的请求。 现在,它需要 key=value+with+spaces,并给我回复"值",但是下载with+spaces并移到下一个 key-value 对。"。"。

谢谢

时间:

不确定为什么你会遇到问题,你的规则对我来说在一个空白ipqos文件中的in安装非常。 但是你可以尝试改变你的规则:

首先要做的是交换两个规则的顺序。 重定向规则必须在任何内部重写之前。 这可以防止两个规则被应用到同一请求( 重写引擎循环遍历所有规则,直到URI停止更改) 。 其次,需要根据实际请求匹配 %{THE_REQUEST} 变量,而不是 %{QUERY_STRING} 匹配:


RewriteCond %{THE_REQUEST} /+searchresults.php?.*[&]?isused=(w+).*&year=(w+).*&make=(w+).*&model=(w+).*&price=(w+).*$ [NC]
RewriteRule ^/searchresults/%1/%2/%3/%4/%5? [R=301,L]

RewriteRule ^searchresults/([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)$/searchresults.php?search=1&year_search_type=single&isused=$1&year=$2&make=$3&model=$4&price=$5 [L]

...