【问题标题】:Links with and without the .aspx extention带有和不带有 .aspx 扩展名的链接
【发布时间】:2010-09-13 21:06:16
【问题描述】:

可以将服务器配置为允许使用带有和不使用 .aspx 扩展名的链接。

如果是,我该如何设置。

我正在使用 umbraco 的客户网站上工作。我知道它内置了友好的 URL 功能。不幸的是,该网站已经上线并为所有链接打开了该功能。

问题是他们想要使用诸如 www.sitename.com/promotion 之类的促销网址,而不必附加 .aspx 扩展名。而且我们不想经历在网站范围内启用 url 重写和必须追踪所有损坏的链接的麻烦。

【问题讨论】:

  • 你到底想完成什么?
  • 我在编辑中回答了您的问题。

标签: c# asp.net vb.net url-rewriting iis-6


【解决方案1】:

【讨论】:

    【解决方案2】:

    我之前写过一个简单的 HttpModule,有几点需要注意:

    • 您需要将 IIS 中的 404 错误指向一个 aspx 页面,否则 IIS 将不会调用 ASP.NET 运行时并且 HTTPModule 将永远不会命中。
    • 这最适合从虚 url 捕获和重定向,而不是作为功能齐全的 urlrewrite。
    公共类 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 所需。 } }

    【讨论】:

      【解决方案3】:

      完全控制 URI 部分的一半提供了链接和一些完成此操作的方法: http://blogs.msdn.com/bags/archive/2008/08/22/rest-in-wcf-part-ix-controlling-the-uri.aspx

      【讨论】:

        猜你喜欢
        • 2011-05-06
        • 1970-01-01
        • 1970-01-01
        • 2011-05-12
        • 1970-01-01
        • 1970-01-01
        • 2019-06-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多