首页 > 解决方案 > 301 重定向循环 - 如何限制重定向

问题描述

我正在一个 MVC 网站上工作,出于 SEO 和分析的原因,我必须将所有 URL 重定向到某种格式。我有一些链接到服务器上运行的其他进程的 URL(我不是 100% 确定它们是如何设置的,因为我没有处理它们)但它们必须部分大写,例如 www.mysite.com/WebPage 否则他们不工作,并被迫重定向到大写。然后这会导致重定向循环,其中 Global.asax 中实现的代码重定向到小写,然后重定向到大写,然后返回到小写等等。我使用的是 .net 4 而不是 4.5,所以很遗憾我无法使用 System.Web.Routing 来尝试解决问题。

目前我已经实现了一些允许忽略这些 URL 的过滤器,但我必须手动识别 URL,而且我知道我并不知道所有这些 URL。

我目前在 Global.asax 中的代码如下所示:

protected void Application_BeginRequest(object sender, EventArgs e)
{
    var path = requested.URL.AbsolutePath.ToLower();
    if (path.Contains(//Filtered URLs)
    return;

    var url = Request.Url.ToString();
    Response.Clear();
    Response.Status = "301 Moved Permanently";
    Response.StatusCode = (int)HttpStatusCode.MovedPermanently;
    Response.AddHeader("Location", url.ToLower());
    Response.End();
}

我希望能够将重定向数量限制为 5 个左右的重定向,因此请求的 URL 在必须为大写时不再发送为小写。

标签: model-view-controllerc#-4.0

解决方案


推荐阅读