Asi*_*dri 13 asp.net redirect response.redirect http-status-code-301
我有一个简单的ASP.NET 3.5应用程序在IIS7下运行在虚拟目录下.所以我的应用的网址就像是http://example.com/app.我想301将请求重定向到example.com/app/default.aspx到example.com/app以获得更好的SEO.我必须通过代码重定向,而不是通过任何IIS设置.我无法通过本文中提到的代码执行此操作:
http://www.4guysfromrolla.com/articles/072810-1.aspx
代码:
if (request.RawUrl.Equals("/default.aspx"))
{
newUrl = string.Format("{0}://{1}{2}",
request.Url.Scheme,
request.Url.Authority,
request.RawUrl.Remove(request.RawUrl.LastIndexOf("/default.aspx", StringComparison.OrdinalIgnoreCase)));
context.Response.Status = "301 moved permanently";
context.Response.AddHeader("Location", newUrl);
}
Run Code Online (Sandbox Code Playgroud)
当应用程序在虚拟目录下时,似乎进入无限循环.即使在301重定向导致无限循环之后,request.RawUrl属性也总是返回"/default.aspx".我该如何解决这个问题?
谢谢,
阿西夫
只要您没有子目录,上面的代码就可以正常工作。AFAIK,这是 ASP.NET 中的一个错误:当 URL 没有该扩展名时,Request.RawUrl 不应包含“/default.aspx”。我已经测试了您的代码,它在没有子目录的情况下工作正常,但如果 default.aspx 位于目录下,则 Request.RawUrl 对象无法摆脱 default.aspx ,从而导致无限循环。
| 归档时间: |
|
| 查看次数: |
7532 次 |
| 最近记录: |