asp.net – 将default.aspx重定向到根虚拟目录

我有一个简单的ASP.NET 3.5应用程序在IIS7下运行在虚拟目录下.所以我的应用程序的URL就像 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);
}

当应用程序处于虚拟目录下时,似乎进入无限循环. request.RawUrl属性始终返回“/default.aspx”,即使在导致无限循环的301重定向之后.如何解决这个问题?

谢谢,

阿西夫

解决方法

只要你没有子目录,上面的代码就可以正常工作. AFAIK是ASP.NET中的一个错误:当URL没有该扩展名时,Request.RawUrl不应包含“/default.aspx”.我已经测试了你的代码,没有子目录,它的工作正常,但如果default.aspx在一个目录下,Request.RawUrl对象无法摆脱default.aspx,因此无限循环.

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....