urlrewirte规则:
<rule>
        <note> The rule means that hot search filter </note>
        <from>/search/(.*)\.htm\?(.*)$</from>
        <to>/zogsearch.do?query=$1&amp;$2</to>
</rule>现在访问的页面的url是:www.xxx.com/search/A%26F.htm?type=img&page=1
到后台的url是:www.xxx.com/zogsearch.do?query=A&F&type=img&page=1
所以代码接到query的值为:A

请问urlrewrite要怎么配置?LOG日志:
信息: org.tuckey.web.filters.urlrewrite.UrlRewriteFilter DEBUG: checking for status path on /search/A%26F.htm
2010-7-19 17:52:48 org.apache.catalina.core.ApplicationContext log
信息: org.tuckey.web.filters.urlrewrite.UrlRewriter DEBUG: processing request for /search/A%26F.htm
2010-7-19 17:52:48 org.apache.catalina.core.ApplicationContext log
信息: org.tuckey.web.filters.urlrewrite.UrlRewriter DEBUG: after utf-8 decoding /search/A&F.htm
2010-7-19 17:52:48 org.apache.catalina.core.ApplicationContext log
信息: org.tuckey.web.filters.urlrewrite.UrlRewriter DEBUG: context stripped
2010-7-19 17:52:48 org.apache.catalina.core.ApplicationContext log
信息: org.tuckey.web.filters.urlrewrite.UrlRewriter DEBUG: url /search/A&F.htm?type=img&page=1
2010-7-19 17:52:48 org.apache.catalina.core.ApplicationContext log
信息: org.tuckey.web.filters.urlrewrite.RuleBase DEBUG: Rule 0 run called with /search/A&F.htm?type=img&page=1
2010-7-19 17:52:48 org.apache.catalina.core.ApplicationContext log
信息: org.tuckey.web.filters.urlrewrite.RuleBase DEBUG: matched "from"
2010-7-19 17:52:48 org.apache.catalina.core.ApplicationContext log
信息: org.tuckey.web.filters.urlrewrite.Rule DEBUG: needs to be forwarded to /zogsearch.do?query=A&F&type=img&page=1

解决方案 »

  1.   

    <?xml version="1.0" encoding="utf-8"?>   
    <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN"  
        "http://tuckey.org/res/dtds/urlrewrite3.0.dtd">   
      
    <urlrewrite>   
        <rule>   
            <note>   
                - 这是一个通用请求url rewrite   
                - 将请求forword url加上“.do”的处理器上。   
                - 例:   
                -   请求 http://{domain}/user/login    将被forward到 http://{domain}/user/login.do   
                -   请求 http://{domain}/user/login/   将被forward到 http://{domain}/user/login.do   
                -   请求 http://{domain}/user/logout/  将被forward到 http://{domain}/user/logout.do   
            </note>   
            <from>^/([_a-zA-Z]+[_0-9a-zA-Z-/]*[_0-9a-zA-Z]+)/?$</from>   
            <to type="forward">/$1.do</to>   
        </rule>   
      
    </urlrewrite>  
      

  2.   


    怎样才能将“&”转化成“%2526”
    现在问题是这样的,前台我是用js转换成%26的,但是经过urlrewrite又转回&字符了。
      

  3.   

    很显然urlrewirte并没有错。
    &经过编码之后,就是%26。在zogsearch.do?query=A&F&type=img&page=1里,
      query=a
      F=NULL
      ...对策就是:
    1,一个回避的办法就是避免使用%26:替换成另外一个符号;在zogsearch.do里,再替换回来。
    或者
    2,在zogsearch.do里,自己解析URL的querystring部分。
      

  4.   

    你这个方法确实可以,还有一个办法就是将&用js的encodeURIComponent方法转两次,因为在urlrewrite要回转一次。