【发布时间】:2026-01-17 07:45:02
【问题描述】:
今天在一个旧的 .Net Webforms 网站中设置 URL 重写时,一个问题一直让我感到沮丧(编辑:这是一个网站项目,而不是一个 Web 应用程序项目,如果这有所作为的话)。我正在处理的网站链接到很多,都链接到“webroot.com/default.aspx”,而不仅仅是“webroot.com”。我们想要设置(在某个地方,此时我不在乎它是作为重定向还是 web.config 在 global.asax 中)一个 URL 重写以从 /default.aspx 到 /。
我尝试通过 global.asax 在代码中进行设置:
if (Request.Url.PathAndQuery.ToLower().Contains("/default.aspx"))
Response.RedirectPermanent("/" + Request.Url.Query, true);
这会导致重定向循环,我完全理解为什么,尝试它是一个愚蠢的想法。没有其他目录有default.aspx,所以我现在不担心抓到别人。
我尝试在 system.webServer 节点中通过 web.config 设置 URL 重写,如下所示:
<rewrite>
<rules>
<rule name="RemoveDefaultAspxFromRoot" stopProcessing="true">
<match url="default.aspx" ignoreCase="true" />
<action type="Rewrite" url="/" appendQueryString="true" />
</rule>
</rules>
</rewrite>
这导致了同样的问题,这让我感到困惑,因为我认为重写不会执行重定向,但显然它会执行?
我尝试在规则中添加以下内容作为伏都教博客帖子的想法:
<conditions logicalGrouping="MatchAll">
<add input="{REMOTE_PORT}" pattern=".*" />
</conditions>
没有骰子;仍然陷入重定向循环。
我什至将 URL 重写模块手动安装到 IIS 并通过 gui 在那里设置规则,可以在这里看到:
http://i.imgur.com/ovYpfhM.png
我仍然遇到重定向问题。
谁能看到我遗漏的任何东西,或者有其他建议?奇怪的是,其他人似乎可以通过使用 Rewrite 操作解决此问题,但它对我不起作用。
我已经在 IIS7 上尝试了这些解决方案,方法是在本地发布并通过 IIS 设置它,并通过 VS2013 设置 IIS Express。我们的生产服务器使用 IIS7。
【问题讨论】:
标签: .net iis iis-7 web-config iis-8