model-view-controller - 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 在必须为大写时不再发送为小写。
解决方案
推荐阅读
- amazon-web-services - Terraform AWS 提供商:启动源实例时出错:不支持:当前不支持请求的配置
- python - 为 http 服务器和发布者分配单独的端口
- oracle - 我在创建触发器时遇到问题
- asp.net - ASP.NET MVC CORS 问题
- javascript - JavaScript 错误:“ReferenceError:sprLib 未定义”
- azure-functions - Azure Function ServiceBusTrigger 绑定未注册
- amazon-web-services - AWS Lambda RDS 代理 - 无法选择 RDS 实例
- python - 在python中将多个函数输出分配给pandas数据框中的单独列
- javascript - Mongoose 相当于 JOIN ... WHERE
- javascript - 一旦我们向其他对等点发送冰候选信号,如何移除监听器?