Asp.net URL从/default.aspx重写为/

Asp.net URL从/default.aspx重写为/,asp.net,iis-6,urlrewriting.net,Asp.net,Iis 6,Urlrewriting.net,我正在IIS 6中使用URL重写.NET工具。我已在IIS中为default.aspx设置了默认页面内容。我试图做的是让/default.aspx提供一个301重定向到根目录(www.example.com/default.aspx->www.example.com)。我尝试过关闭默认文档,但没有效果 我希望做的是使用几个URL重写.NET规则来实现这个目标。有什么想法吗 编辑: 对不起,我忘了澄清。如果我从/default.aspx重定向到/并且打开了默认文档(我想让它们保持打开状态),那么我

我正在IIS 6中使用URL重写.NET工具。我已在IIS中为default.aspx设置了默认页面内容。我试图做的是让/default.aspx提供一个301重定向到根目录(www.example.com/default.aspx->www.example.com)。我尝试过关闭默认文档,但没有效果

我希望做的是使用几个URL重写.NET规则来实现这个目标。有什么想法吗

编辑:


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

我不确定我是否理解问题所在

但是,如果关闭默认文档,则/将只指向目录,而不是default.aspx页面


保持默认文档处于打开状态,然后根据default.aspx是否在请求的url中执行重定向。

如果我理解正确,您不希望在有人进入包含该文档的文件夹时显示“default.aspx”

因此,如果他们点击了它,您想自动重定向到“/”并加载默认文档吗

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

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

这听起来对吗


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

您可以使用常规的.net来检查httprequest url,如果其中有“default.aspx”,您可以重定向到“/”,不会有无限循环,最好在预加载时执行此操作,然后结束响应,以尽量减少处理所需的时间。最后,我使用IIS 7和url重写模块,这允许您正确执行此重定向

编辑:

规则是

<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>

我也有同样的问题。对于那些想知道为什么会有人想这样做的人来说,这是一个搜索引擎优化的问题。如果谷歌为你的主页编制索引,并在末尾添加或不添加default.aspx,那么PageRank和链接流行度将在两个URL之间进行分割。现在,如果你遇到了这个问题,并且你能够整合这两个URL,那么你可能会在搜索排名上得到提升。还有一件事要记住,如果你遇到麻烦,你必须使用301重定向,让谷歌在两个URL之间整合他们的索引。否则你的努力将是徒劳的

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

我在这里记录了完整的解决方案。。。

不久前,我在试图弄清楚为什么某些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级别将默认文档附加到每个请求上。因此,您可以执行重定向

我把这一切都写在这篇博文中:-但这是几年前写的,正如目前公认的答案所提供的那样,IIS7的变化可能已经解决了这个问题


但是如果您正在解决这个问题,那么查看通配符映射状态是正确的开始。

这将创建一个无限循环“根据请求的url中是否包含default.aspx进行重定向”:if(Request.url.ToString().ToLower().IndexOf(“default.aspx”)!=-1)response.redirect(/”;这仍然会导致无限循环,因为默认文档已打开,请求/变成请求/default.aspxI建议您发布有关配置的信息我知道这很奇怪,但这是站点的一个要求,对于SEO值,因此只有一个链接会将您带到default.aspx,而不是两个。我做了相当多的搜索引擎优化培训,听到这似乎很奇怪。我很惊讶像谷歌或MSN这样的搜索引擎会惩罚你。所以我只能猜测它,这样你就可以得到一个url的所有排名点。仍然-没有做搜索引擎优化的东西在一段时间内,所以这只是一个猜测!据我所知,这并不是说有两个页面提供相同的页面,而是如果人们同时链接到example.com和example.com/default.aspx,我被告知这会分散链接值。你是对的,两个页面内容相同不如一个页面:对不起,我没有看到上面答案中的评论,我不知道“升级到IIS7”是否真的是这个问题的答案。这对回发不起作用。。。(每次你采取一些类似页面的按钮点击操作时,你都会被重定向)也许,但我认为这取决于表单上的操作,无论是设置为default.aspx还是设置为/(但不能肯定,没有必要尝试该级别)@kape123-如果需要,可以添加一个条件,该条件仅应用于GET请求的重定向。重写模块应该允许您构建该条件