RewriteRule 删除转义参数

RewriteRule 删除转义参数

我需要有关以下 RewriteRule 的一些帮助:

重写规则 ^/iesearch/(.*)$ /jsp/search/ieaccelerators/visualsearch.jsp?q=$1 [L,PT]

目的是将搜索查询重写到http://mydomain/iesearch/alvin+the+chipJSP。只要 URL 不包含编码字符(例如),这种方法就很有效http://mydomain/iesearch/alvin+%26+the+chip

重写日志显示以下内容:(2)使用请求的 uri /iesearch/alvin+&+the+chip 初始化重写引擎

(2)重写 '/iesearch/alvin+the+&+chip' -> '/jsp/search/ieaccelerators/visualsearch.jsp?q=alvin+&+the+chip'

(3)拆分 uri=/jsp/search/ieaccelerators/visualsearch.jsp?q=alvin+&+the+chip -> uri=/jsp/search/ieaccelerators/visualsearch.jsp,args=q=alvin+&+the+chip

我希望传递的是 %26 而不是 &。

答案1

[B]标志应强制对查询字符串进行转义,即

RewriteRule ^/iesearch/(.*)$ /jsp/search/ieaccelerators/visualsearch.jsp?q=$1 [L,PT,B] 

答案2

我设法将其排序如下:

RewriteCond %{THE_REQUEST} ^[AZ]+\ /iesearch/([^\ ]*)\ HTTP/ RewriteRule ^/iesearch/ /jsp/search/ieaccelerators/visualsearch.jsp?q=%1 [NE,PT,L]

相关内容