繁体   English   中英

是什么导致Tuckey的UrlRewriteFilter格式错误地编码为urlencode的unicode字符(例如ö的%C3%B6),如何避免呢?

[英]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-usingencode属性,但没有帮助。

我有一个类似的问题。 我所做的是将解码设置为null:

<urlrewrite decode-using="null">

我在下面描述的问题似乎与此错误报告有关,该错误报告已于2010年提交,此后一直未得到解决。 我可能必须通过使用Java“手动”处理请求来解决此问题。 但是,其他想法仍然很受欢迎。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM