可以将服务器配置为允许使用带有和不使用 .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