我已经设置了一个重写查询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是使用带有“unescape”内部函数的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]