代码之家  ›  专栏  ›  技术社区  ›  Lea Cohen mark winkle

在ASP.NET中无重定向的Url重写

  •  2
  • Lea Cohen mark winkle  · 技术社区  · 14 年前


    由于我们已经有许多网站建立在这个CMS上,重写CMS来创建友好的url有点困难(尽管这是我们正在考虑的一种方法,如果没有其他选择的话),我们正在寻找一种方法,当用户点击一个长url时,url将在浏览器中变成友好的- 不使用Response.Redirect() .
    在WordPress中存在这样一种方法(我不确定它是在代码中还是在Apache中完成),我想知道它是否也可以在ASP.NET 2中完成。
    另一件需要考虑的事情是,url之间的更改必须通过访问DB来完成。
    更新:

    3 回复  |  直到 14 年前
        1
  •  1
  •   Andrew M    14 年前

    对于额外的评论,我认为你需要做的是咬紧牙关,修改CMS,把新的链接写进页面。你已经说过,你有正常的网址重写,可以把新的网址转换成旧的时候,他们来了。如果还要在标记中写出新的url,那么一切都应该正常工作。

    从搜索引擎优化的角度来看,如果你的CMS产生的网页有旧的链接,那么这就是搜索引擎将看到和索引。你对此无能为力,javascript,重定向或者其他。(尽管一个永久的重定向会让你有一点进步)。

    Fiddler 或者另一个http调试器来查看当您跟踪其中一个链接时会发生什么。

    canonical link tag 从旧网址返回到新网址。

        2
  •  3
  •   Community CDub    7 年前

    如果你使用ii7,最简单的方法就是使用 URL Rewrite Module 根据这个链接你可以

    将复杂的URL转换为简单的 一致的网址

    使用 正则表达式模式匹配, 以及要检查的通配符映射 HTTP头和IIS服务器变量。 可以编写规则来生成url 索引,并允许URL跟随 一致且规范的主机名 支持的规则创建过程 对于内容重写,规则模板, 重写映射、规则验证和 导入现有的MODY重写规则。

    否则,您将不得不使用Andrew M描述的技术或使用Response.Redirect。无论如何,我相当肯定所有这些方法都会导致http 301响应。我之所以提到这一点,是因为不清楚为什么不想做Response.Redirect。这是编码约束吗?

    由于使用的是IIS 6,因此需要使用另一种方法重写URL。

    This Article

    实现URL重写

    或者在IIS使用ISAPI过滤器 Web服务器级别,或使用HTTP 中的模块或HTTP处理程序 ASP.NET级别。本文的重点是 用实现URL重写 所以我们不会深入研究 用ISAPI过滤器重写。在那里 然而,它们是众多的第三方 可用于URL的ISAPI筛选器

    ISAPI Rewrite

    IIS Rewrite

    PageXChanger

    还有很多人!

    性能 例如,这些url的页面加载差异不明显

    "https://stackoverflow.com/q/4144940/119477"

    "https://stackoverflow.com/questions/4144940/url-rewrite-without-redirect-in-asp-net"

    页面排名

    This is 谷歌的网站管理员中心网站要说的是301。

    在搜索引擎中显示的页面 结果,我们建议您使用 确保用户和 正确的一页。

        3
  •  1
  •   Andrew M    14 年前

    我不确定你在说什么,但基本上用户已经在阅读的页面包含一个旧的,长的,URL,你希望它在浏览器从服务器请求页面之前,在客户端动态地更改为新的,短的URL?

    听起来更像是你想要的URL路由,包括在ASP.Net 4和3.5中?

    标准URL重写修改服务器上的传入请求对象,以便客户端浏览器提交新URL,下游页面处理程序查看旧URL。我相信路由技术也将这个概念扩展到了传出响应,在将响应页面中的旧url发送到客户端之前,将它们重写为新url。

    Scott Gu在这里讨论这个主题: http://weblogs.asp.net/scottgu/archive/2009/10/13/url-routing-with-asp-net-4-web-forms-vs-2010-and-net-4-0-series.aspx

    Scott Gu还有一篇关于普通URL重写的旧文章,概述了几种不同的重写方法。也许您可以通过挂接到Application_PreSendRequestContent并手动修改响应流中的所有href值来扩展这个概念,但我自己并不喜欢它。 http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx

    推荐文章