URL 重写和 IIS Express:有些规则有效,有些则无效

Posted

技术标签:

【中文标题】URL 重写和 IIS Express:有些规则有效,有些则无效【英文标题】:URL Rewrite and IIS Express: some rules work, some don't 【发布时间】:2012-02-04 04:03:44 【问题描述】:

我正在使用 IIS Express 开发一个 MVC 3 应用程序,该应用程序在 web.config 中进行一些 URL 重写。我遇到了一些奇怪的情况,有些规则可以完美运行,而另一些则失败。

例如这个工作:

<rule name="Remove ETag">
 <match serverVariable="RESPONSE_ETag" pattern=".+" />
 <action type="Rewrite" value="" />
</rule>

(来源:https://***.com/a/8089525/88709)

这个没有(在第二行给出Unrecognized attribute 'url'):

<rule name="Remove trailing slash" stopProcessing="true">
  <match url="(.*)/$" />
  <conditions>
    <add input="REQUEST_FILENAME" matchType="IsFile" negate="true" />
    <add input="REQUEST_FILENAME" matchType="IsDirectory" negate="true" />
  </conditions>
  <action type="Redirect" redirectType="Permanent" url="R:1" />
</rule>

(来源:http://blogs.iis.net/ruslany/archive/2009/04/08/10-url-rewriting-tips-and-tricks.aspx)

根据 ScottGu 的 Introducing IIS Express,IIS Express 支持完整的 Web 服务器功能集 - 包括 SSL、URL 重写、媒体支持和所有其他 IIS 7.x 模块。

我倾向于相信 IIS Express 附带的 URL 重写模块可能是 1.0 版本,而不是 2.0。所以我安装了URL Rewrite Module 2.0,但我仍然得到同样的错误。

有人知道为什么会这样吗?如果重要的话,我的设置是 Visual Studio 2010 SP1、IIS Express 7.5.1070、ASP.NET MVC 3。

【问题讨论】:

在我的 IIS Express 上运行良好:s 您可能从另一个代码中收到此错误。 @tugberk 我刚刚创建了一个新的空 MVC 项目,将所有内容都保留为默认值,并将删除尾部斜杠规则添加到 web.config。同样的错误。两条规则都适用于您的 IIS Express 吗?这很奇怪。我开始认为我的设置有问题... 我已经写了一篇关于它的博客文章,并且我都在 IIS Express 上对其进行了测试:tugberkugurlu.com/archive/… 无法弄清楚可能出了什么问题:s 【参考方案1】:

问题是我把&lt;rule&gt;放在了错误的节点上; “删除尾部斜杠”规则应该放在 &lt;rules&gt;&lt;/rules&gt; 中,但我错误地将它放在 &lt;outboundRules&gt;&lt;/outboundRules&gt; 中(顺便说一句,“删除 ETag”规则所在的位置)。

【讨论】:

以上是关于URL 重写和 IIS Express:有些规则有效,有些则无效的主要内容,如果未能解决你的问题,请参考以下文章

thinkphp在iis下如何写规则url重写

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

关于IIS7 URL重写的问题

IIS重写规则以重定向URL

iis url重写模块 是干啥用的

xml IIS URL重写规则