URL Rewrite Filter不使用包含特殊字符的查询参数

时间:2014-05-22 09:59:20

标签: url-rewriting filter seo tuckey-urlrewrite-filter

我正在使用网址重写过滤器将一些丑陋的网址转发给漂亮的网址。 参考Conditions Based On URL Parameters, 我已经使用UrlRewriteFilter做了一些事情,这实际上是让我的网站谷歌可以爬行所必需的。 这是怎么回事。

<rule enabled="true">
        <note>
            The rule means that requests to /test/status/ will be redirected to /rewrite-status
            the url will be rewritten.
        </note>
        <condition type="parameter" name="_escaped_fragment_" operator="equal">(apple|kiwi|orange)</condition>
            <from>^/mysite/(.+)/(.*)$</from>
            <to type="redirect">/mysite/%{parameter:_escaped_fragment_}</to>
    </rule>

失败抛出java.lang.IllegalArgumentException:URLDecoder:转义(%)模式中的非法十六进制字符 - %% 7。 由于我的变量包含下划线(_escaped_fragment_),因此在其中使用名为'friuit'的参数变量可以正常工作。 请帮我摆脱它。

1 个答案:

答案 0 :(得分:1)

<rule>
<condition name="_escaped_fragment_" type="parameter" operator="equal">(apple|kiwi|orange)</condition>
<to type="redirect">/mysite/%1</to>
</rule>

将查询参数的值与%{parameter:_escaped_fragment_}一起使用仅适用于不包含特殊字符的单词。在%1中(即%后跟查询参数索引)将适用于任何问题,这解决了我的问题。