IIS URL重写非英文字符的规则问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IIS URL重写非英文字符的规则问题相关的知识,希望对你有一定的参考价值。

我的IIS URL Rewrite 2规则与非英语(瑞典语)字符(åäö)一起使用时遇到问题。我在Windows Server 2012 R2(IIS 8.5)上。

此规则适用于英文字符:

<rule name="RedirectSubWebKeepURI" enabled="true" stopProcessing="true">    
    <match url="^department/lawyers/(.*)" />
    <action type="Redirect" url="/section/lawyers/{R:1}" />
</rule>

但是假设我将“律师”拼写为“låwyers”(不是真正的词!),我怎样才能让它发挥作用?

以下两个例子都不起作用:

<match url="^department/låwyers/(.*)" />          [real character]
<match url="^department/l%C3%A5wyers/(.*)" />     [URL encoded 'å']

我错过了什么? This previous question说你必须使用{UNENCODED_URL}变量,但这是否意味着我必须匹配所有URL:s与".*"并将实际匹配逻辑移动到一个条件而不是?如果是这样,我无法弄清楚我的规则应该如何重写...

感谢帮助!

答案

尝试使用这样的内部UrlEncode{}

<action type="Redirect" url="/section/lawyers/{UrlEncode:{R:1}}" />

以上是关于IIS URL重写非英文字符的规则问题的主要内容,如果未能解决你的问题,请参考以下文章

IIS URL 重写规则

IIS URL重写https规则忽略本地主机

如何配置iis rewrite模块的url重写规则

使用反向代理的 IIS URL 重写规则 - HTTP 错误 500.52

IIS web.config重写规则条件输入内两个捕获组的比较

关于IIS7 URL重写的问题