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)

IIS 7.5 中的 URL 重写导致内部服务器错误

MVC 5 IIS 7.5 双跳问题(避免硬编码 SQL 密码)

IIS Url重写

使用 IIS URL 重写从地址中删除 www 的正确方法

ASP.Net URL 编码