1

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

如果是,我该如何设置它。

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

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

4

3 回答 3

3

Scott Guthrie 在这方面有一篇很好的文章。

http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx

于 2008-09-28T19:54:16.113 回答
1

我之前通过编写一个简单的 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 所需。
        }
    }
于 2008-09-28T21:53:03.317 回答
0

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

于 2008-09-28T20:06:55.677 回答