我需要有关以下 RewriteRule 的一些帮助:
重写规则 ^/iesearch/(.*)$ /jsp/search/ieaccelerators/visualsearch.jsp?q=$1 [L,PT]
目的是将搜索查询重写到http://mydomain/iesearch/alvin+the+chip
JSP。只要 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]