301重定向循环-如何对重定向设置限制

时间:2019-06-03 10:16:31

标签: model-view-controller c#-4.0

我正在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不再必须以大写形式发送为小写。

0 个答案:

没有答案