IIS 7.5 URL 重写编码
Posted
技术标签:
【中文标题】IIS 7.5 URL 重写编码【英文标题】:IIS 7.5 URL Rewrite encoding 【发布时间】:2013-01-06 17:52:52 【问题描述】:我在 web.config 中有以下重写规则:
<rewrite>
<rules>
<rule name="Search" stopProcessing="true">
<match url="^search/(.+)$" />
<action type="Redirect" url="?q=R:1" />
</rule>
</rules>
</rewrite>
它在 Azure 网站上的 IIS Express 8.0 和 IIS 7.5 上都可以正常工作,例如 /search/test
(仅 ascii 字符)之类的 URL - 重定向到 /?q=test
。
但是对于 Azure 网站上的 IIS 7.5 上带有 unicode 字符(/search/тест
或 /search/%D1%82%D0%B5%D1%81%D1%82
)的 URL,重定向到 /?q=теÑÑ‚
(或 /?q=%C3%91%E2%80%9A%C3%90%C2%B5%C3%91%C2%81%C3%91%E2%80%9A
)而不是 /?q=%D1%82%D0%B5%D1%81%D1%82
。它在 IIS Express 8.0 上正常工作。
【问题讨论】:
【参考方案1】:您应该使用内部 UrlEncode:
函数正确编码 URL 中无效的字符(例如 UTF-8 字符)。所以将 URL 部分替换为:url="?q=UrlEncode:R:1"
。
【讨论】:
谢谢,它有效!但它应该是url="?q=UrlEncode:R:1"
。我以为我尝试了这个,但看起来我尝试了其他方法。
供参考:docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/…以上是关于IIS 7.5 URL 重写编码的主要内容,如果未能解决你的问题,请参考以下文章
httpModules 不适用于 iis 7.5 的 url 重写/扩展少 url(给出错误 500.0)