URL从/default.aspx重写为/

时间:2009-03-26 16:59:49

标签: asp.net iis-6 urlrewriting.net

我在IIS 6中使用了URL Rewriting.NET工具。我在IIS中为default.aspx设置了默认页面内容。我要做的是让/default.aspx提供301重定向到根目录(www.example.com/default.aspx - > www.example.com)。我试过关掉默认文件,但没有用。

我希望做的是使用一些URL Rewriting.NET规则来实现这一目标。有什么想法吗?

编辑:

抱歉,我忘了澄清。如果我从/default.aspx重定向到/打开默认文档(我想让它们保持打开状态),那么我会得到一个无限循环的默认值 - > / - >默认

6 个答案:

答案 0 :(得分:15)

最后,我使用带有URL Rewrite模块的IIS 7,这使您可以正确地进行此重定向。

编辑:

规则是

<rule name="Default Redirect" stopProcessing="true">
    <match url="^default\.aspx$" />
    <action type="Redirect" url="/" redirectType="Permanent" />
</rule>

您可以为每个文件夹使用单独的规则,也可以使用

<rule name="All Redirect">
    <match url="^(.*\/)*default\.aspx$" />
    <action type="Rewrite" url="{R:1}" />
</rule>

答案 1 :(得分:5)

我在尝试解决为什么某些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 Redirecting from /default.aspx to the site root - the final word - 但这是几年前写的,IIS7中的更改可能已经解决了问题,正如目前接受的答案所提供的那样。

但是如果你正在与这个问题作斗争,那么查看通配符映射状态是正确的起点。

答案 2 :(得分:2)

我遇到了同样的问题。对于那些想知道为什么有人想要这样做的人来说,这是一个SEO的问题。如果谷歌在最后使用和不使用default.aspx对您的主页编制索引,则PageRank和链接流行度将在两个URL之间分配。现在,如果您遇到此问题,并且您能够合并这两个URL,那么您可能会获得搜索排名的提升。要记住的另一件事是,如果你遇到麻烦,你必须使用301重定向谷歌来巩固他们在两个URL之间的索引。否则你的努力将是徒劳的。

这已经太迟了,因为您已经通过升级到IIS7解决了这个问题。但我要补充一点,我为IIS6提出的这个问题的唯一解决方案是添加一个ISAPI过滤器。

我在这里记录了完整的解决方案...... http://swortham.blogspot.com/2008/12/redirecting-default-page-defaultaspx-to.html

答案 3 :(得分:1)

如果我理解正确,那么每当有人进入具有该文档的文件夹时,您都不希望显示“default.aspx”。

所以如果他们确实打了它,你想自动重定向到'/'并且只是加载默认文件?

如果是这种情况,那么,如上所述,您将面临无限循环的风险。第二条评论给你一个答案,但我想扩展到重写引擎你想要的是:

关闭默认文件 使用重写引擎注册每个文件夹 请求该文件夹时,根据目标规则

加载default.aspx文件

这听起来对吗?

我不得不问,你为什么要这样做?

答案 4 :(得分:0)

我不确定我明白这是什么问题。

虽然如果你关闭默认文件,那么/只会指向目录而不是default.aspx页面。

保留默认文档,并根据default.aspx是否在请求的网址中进行重定向。

答案 5 :(得分:0)

你可以使用常规.net来检查httprequest网址,如果它有“default.aspx”,你可以重定向到“/”,没有无限循环你最好在预加载时这样做,并结束之后的回应,以尽量减少处理所需的时间