[英]What causes Tuckey's UrlRewriteFilter to malform urlencoded unicode characters (e.g. %C3%B6 for ö) and how can I avoid it?
我们正在使用一个简单的UrlRewriteFilter规则来永久(301)重定向HTTP请求, 而不会在斜杠后面加上斜杠到相同的URL。
在某些情况下,我们的表示层需要在其中包含编码特殊字符的URL(例如ö的%C3%B6),只要不涉及UrlRewriteFilter,它就可以正常工作。 但是当规则生效时,我可以看到重定向时编码的字符格式错误,例如
www.mydomain.com/asdf%C3%B6asdf/
/-> www.mydomain.com/asdf%F6asdf/
> www.mydomain.com/asdf%F6asdf/
%F6
不是有效的unicode序列(经url解码后,以黑色菱形结尾为问号)。
我们在整个应用程序中使用UTF-8,它在响应标头以及HTML的<head>
部分中进行设置。 格式错误的编码发生在Windows和Linux计算机上。 重写规则如下所示
<rule enabled="true" match-type="regex" >
<name>Force trailing slash</name>
<note>...</note>
<condition type="request-uri" operator="notequal">...>/condition> <!-- some URLs shall not be redirected -->
<from>(^[^\?]*)(\?.*)?$</from>
<to type="permanent-redirect" last="true" >$1/$2</to> <!-- adding trailing slash and query string, if present -->
</rule>
我很高兴有任何想法可以解决这个问题。 我玩过decode-using
和encode
属性,但没有帮助。
我有一个类似的问题。 我所做的是将解码设置为null:
<urlrewrite decode-using="null">
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.