我在IIS 6中使用URL Rewriting.NET工具.我在IIS中为default.aspx设置了默认页面内容.我要做的是让/default.aspx提供301重定向到根目录(www.example.com/default.aspx - > www.example.com).我试过关掉默认文件,但没有用.
我希望做的是使用一些URL Rewriting.NET规则来实现这一目标.有什么想法吗?
编辑:
对不起,我忘了澄清.如果我从/default.aspx重定向到/打开默认文档(我想让它们保持打开状态)然后我得到一个无限循环的默认 - >/ - >默认
最后,我使用带有URL Rewrite模块的IIS 7,这使您可以正确地执行此重定向.
编辑:
规则是
你可以为每个文件夹使用单独的规则,或者你可以使用
我偶然发现了这个问题,同时试图弄清楚为什么一些IIS安装会重定向/default.aspx,有些会退化成终端循环.
我发现答案是asp.net是否通过'通配符'映射来运行IIS中的所有请求.
简而言之,如果您有一个开箱即用的IIS设置,它将始终将默认文档附加到站点根目录的任何请求上.因此,当您检查ASP.NET中的Request.Url时,example.com将成为example.com/default.aspx.因此,如果您检测到这种情况并尝试重定向并返回到example.com,IIS会这样做,请附加/default.aspx,并且您的代码会陷入其自己制作的循环中.
例外情况是,如果您设置通配符映射,以便通过asp.net管道处理所有请求.在这种情况下,IIS不再将默认文档附加到Request.Url级别的每个请求.因此,您可以进行重定向.
我把这一切都放在这篇博客文章中:301从/default.aspx重定向到站点根目录 - 最后一个字 - 但这是几年前编写的,IIS7中的更改可能已经解决了问题,正如当前接受的答案所提供的那样.
但是,如果你正在与这个问题作斗争,那么查看通配符映射状态是正确的起点.