可以将服务器配置为允许使用带有和不使用 .aspx 扩展名的链接。
如果是,我该如何设置它。
我正在使用 umbraco 的客户网站上工作。我知道它内置了友好的 URL 功能。不幸的是,该网站已经上线并为所有链接打开了该功能。
问题是他们想要使用诸如 www.sitename.com/promotion 之类的促销网址,而不必附加 .aspx 扩展名。而且我们不想经历在网站范围内启用 url 重写和必须追踪所有损坏的链接的麻烦。
可以将服务器配置为允许使用带有和不使用 .aspx 扩展名的链接。
如果是,我该如何设置它。
我正在使用 umbraco 的客户网站上工作。我知道它内置了友好的 URL 功能。不幸的是,该网站已经上线并为所有链接打开了该功能。
问题是他们想要使用诸如 www.sitename.com/promotion 之类的促销网址,而不必附加 .aspx 扩展名。而且我们不想经历在网站范围内启用 url 重写和必须追踪所有损坏的链接的麻烦。
Scott Guthrie 在这方面有一篇很好的文章。
http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx
我之前通过编写一个简单的 HttpModule 来完成此操作,需要注意以下几点:
公共类 UrlRewrite : IHttpModule { 公共无效初始化(HttpApplication 应用程序) { application.BeginRequest += (new EventHandler(this.Application_BeginRequest)); } 私有无效 Application_BeginRequest(对象源,EventArgs e) { // RawUrl 看起来像: // http://domain.com/404.aspx;http://domain.com/Posts/SomePost/ if (HttpContext.Current.Request.RawUrl.Contains(";") && HttpContext.Current.Request.RawUrl.Contains("404.aspx")) { // 这会将最初输入的 URL 放入 url[1] string[] url = HttpContext.Current.Request.RawUrl.ToString().Split(';'); // 现在解析 URL 并重定向到你想去的地方, // 您可以使用 XML 文件来存储短 URL 和真实 URL 之间的映射。 字符串 newUrl = parseYourUrl(url[1]); Response.Redirect(newUrl); } // 如果我们到达这里,那么 404.aspx 的实际内容将被加载。 } 公共无效处置() { // 实现接口 IHttpModule 所需。 } }
在完全控制 URI部分的中途提供了链接和一些完成此操作的方法:http: //blogs.msdn.com/bags/archive/2008/08/22/rest-in-wcf-part-ix -控制-uri.aspx