apache – 查询string重写规则添加百分比符号

我已经设置了一个重写查询string的规则。 尽pipe正确执行了redirect,但URL的重写查询部分会附加%字符,如下所示:

的index.php?选项= com_finder&视图=search&F = 1&ITEMID = 365&Q =在%2520emperor%2527s%2520new%2520school

代替

的index.php?选项= com_finder&视图=search&F = 1&ITEMID = 365&Q =在%20emperor%-27%20new%20school

重写规则设置如下:

RewriteCond %{REQUEST_URI} ^/site-search\.html$ RewriteCond %{QUERY_STRING} ^searchword=(.*)$ RewriteRule ^(.*)$ http://www.example.com/index.php?option=com_finder&view=search&f=1&Itemid=365&q=%1 [L,R=301] 

我的目标是重写

网站search.html?search内容= someword

全站search?Q = someword

语法有什么不对吗?

你非常接近正确的格式。

尝试改变最后一行的最后一部分

从&q =%1 [L,R = 301]

到&q = $ 1 [L,R = 301]

我遇到了与Apache / 2.2.15相同的问题。 我的解决scheme是使用带有“unes​​cape”内部函数的RewriteMap 。 使用这两次执行一个双重URL解码,解决这个问题。

使用你的例子的演示:

 RewriteMap unesc int:unescape RewriteCond %{REQUEST_URI} ^/site-search\.html$ RewriteCond %{QUERY_STRING} ^searchword=(.*)$ RewriteRule ^(.*)$ http://www.example.com/index.php?option=com_finder&view=search&f=1&Itemid=365&q=${unesc:${unesc:%1}} [L,R=301]