我的任务是为IIS 7.5中的.Net MVC站点创建一些重写规则。我安装了Url Rewrite Module,并配置了一些非常简单的规则但没有成功。
所以我的第一个问题是,IIS处理传入的URL的顺序是什么? 是Incomming URL - >网址重写 - >重写网址 - > .Net MVC路由管理器获取更新的URL?
如果没有,那么它以何种顺序处理它,如何获得URL Rewrite以首先处理URL?
有一个复选框,上面写着“记录重写的URL”,这是登录到IIS日志还是其他内容?
以下是我创建的重写入站规则:
Pattern: (.*)/fin/(.*)
Rewrite URL: {R:1}/fi/{R:2}
非常感谢任何帮助。
更新:2012年4月5日 我仍然无法让它在系统上工作。我尝试通过Localhost命中它以消除代理和负载余额,它仍然无法正常工作。我将它安装到另一台机器上,它就像一个冠军。任何建议都将不胜感激。
**更新:2012年4月6日** 我仍然没有找到问题,但我想知道我的MVC应用程序的web.config是否导致任何问题。看来web.config中的这些语句是否可能导致这种情况?:
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule" />
</modules>
答案 0 :(得分:0)
雷
你对重写过程的步骤是正确的。在将请求传递给相应的asp.net应用程序之前,IIS将首先重写URL。
请注意使用IIS重写路由,因为它们可以相互竞争。 特别是如果IIS以您不期望的方式重写URL。对我来说,像这样的案例证明杰夫阿特伍德在他写博客时是对的:
通常我会错误地使用IIS重写路由,并且只会使用IIS重写来强制执行一般规则,例如建立规范域(www vs no www),强制小写网址或强制执行尾部斜杠在网址上。
你的问题似乎更具体。在使用霰弹枪解决问题之前,我会耗尽所有路由选项(如URL重写)。
答案 1 :(得分:0)
2012年4月11日更新
URL Rewrite Module实际上已正确安装。做了一些非常基本的测试,他们的工作。发现我的规则的正则表达式不正确(有一个额外的斜杠),我需要做一个IISReset。如果有其他人发现此帖子,请确保您的重定向规则正确无误,并执行一个非常简单的基本测试来验证其工作。