Url rewriting URL重写筛选器无法处理包含特殊字符的查询参数
我正在使用URL重写过滤器将一些丑陋的URL转发到漂亮的URL。 指, 我已经使用URLEwriteFilter做了一些事情,这实际上是使我的站点能够进行谷歌爬网所必需的。 事情是这样的Url rewriting URL重写筛选器无法处理包含特殊字符的查询参数,url-rewriting,filter,seo,tuckey-urlrewrite-filter,Url Rewriting,Filter,Seo,Tuckey Urlrewrite Filter,我正在使用URL重写过滤器将一些丑陋的URL转发到漂亮的URL。 指, 我已经使用URLEwriteFilter做了一些事情,这实际上是使我的站点能够进行谷歌爬网所必需的。 事情是这样的 <rule enabled="true"> <note> The rule means that requests to /test/status/ will be redirected to /rewrite-status
<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>
该规则意味着对/test/status/的请求将被重定向到/rewrite status
url将被重写。
(苹果|猕猴桃|橙)
^/mysite/(.+)/(.*)$
/mysite/%{参数:_转义的_片段u}
它无法在转义(%)模式中抛出java.lang.IllegalArgumentException:URLDecoder:非法十六进制字符–%%7。
因为我的变量包含下划线(_escape_fragment_u),其中可以与名为“friuit”的参数变量配合使用。
请帮我摆脱困境。
<rule>
<condition name="_escaped_fragment_" type="parameter" operator="equal">(apple|kiwi|orange)</condition>
<to type="redirect">/mysite/%1</to>
</rule>
(苹果|猕猴桃|橙)
/mysite/%1
将查询参数的值与
%{parameter:_escape_fragment_uo}
一起使用将仅适用于不包含特殊字符的单词。其中%1
(即%后跟查询参数索引)将适用于any,这解决了我的问题。是否要向代码中添加和解释?只有代码的答案是好的,有解释的答案更好:)用户3686902给出的解决方案非常有效!我很高兴给他50%的声誉@秘密配方,他似乎是新来的。我可以更好地解释这一点。将查询参数的值与%{parameter:_escape_fragment_u}
一起使用将仅适用于不包含特殊字符的单词。其中,%1
(即%后跟查询参数索引)将适用于any,这解决了我的问题。