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