我正在使用网址重写过滤器将一些丑陋的网址转发给漂亮的网址。 参考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'的参数变量可以正常工作。 请帮我摆脱它。
答案 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
中(即%后跟查询参数索引)将适用于任何问题,这解决了我的问题。