在 ASP.NET 和 IIS 6 上将 / 文件夹重定向到 /mypage.aspx

Redirect /folder to /mypage.aspx on ASP.NET and IIS 6

我正在尝试设置一个较短的 url 供用户在他们的营销中使用 material(例如 mydomain.com/jobs 指向 mydomain.com/employment。 aspx).最大的原因是我们即将启动我们的新网站,其中 /employment.aspx 将不再有效。在新站点中,我有 /jobs 工作,但我不知道如何在我们的旧站点上更改它。我正在使用 IIS 6 和 ASP.NET 3.5.

我尝试过的所有选项,都已经有可用的代码。我不确定发生了什么或出了什么问题。

  1. 系统。web/urlMappings <add url="~/jobs" mappedUrl="~/employment.aspx" /> - 在我的电脑上工作,在服务器上不工作。
  2. system.web/urlMappings <add url="~/jobs/default.aspx" mappedUrl="~/employment.aspx" /> - /jobs/default.aspx 有效,但 /jobs 无效。
  3. configuration/urlrewritingnet <add name="RewriteJobs" virualUrl="~/jobs" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/employment.aspx" ignoreCase="true" /> <add name="RewriteJobs2" virualUrl="~/jobs/default.aspx" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/employment.aspx" ignoreCase="true" /> - 都不起作用
  4. 我看到有人提到在 Application_BeginRequest 方法中使用 global.asax,但这也不起作用。

任何人都可以指出我可能做错的正确方向吗?

在不弄乱任何设置或插件的情况下做到这一点的最简单方法是实际创建该目录并将文件放入其中。您可以有一个包含以下内容的空 default.aspx:

<%@ Page Language="C#" %>

<script type="text/C#" runat="server">
void Page_Load(object sender, System.EventArgs e) {
    Response.Redirect("~/employment.aspx");
}
</script>

确保 IIS 将 default.aspx 视为此目录的默认页面。

或者,如果您想要 301 而不是 302,请完成手动设置这些 headers 的过程,因为 Response.RedirectPermanent 在 .NET 4 之前不可用。

这不是最 "correct" 的方法,如果你尝试做太多这样的事情会变得一团糟,但这是一个临时解决办法,效果很好。

也许这对你有用,一个 IIS 修复:

http://www.iis.net/downloads/microsoft/url-rewrite

您可能会考虑使用 Helicon Isapi 重写它,因为我记得在 IIS 6 上设置重写模块时存在一些问题。另一方面,我对 helicon 并不感兴趣。只是一个尝试的选择。