代码之家  ›  专栏  ›  技术社区  ›  Cunners

如何创建用户友好的URL,如stackoverflow?

  •  6
  • Cunners  · 技术社区  · 16 年前

    我想创建一个与创建问题时堆栈溢出类似的URL类型。

    例子:

    Non-ajax GET/POST using jQuery (plugin?) 使用jquery插件的非ajax get post

    我对最后一部分特别感兴趣,这一部分我用粗体字强调过。如何使用分隔符将页面标题添加到URL中?

    这种技术叫什么?

    7 回复  |  直到 16 年前
        1
  •  14
  •   Jon Galloway    16 年前

    使用 ASP.NET routing 而不是在可能的时候重写。MVC和Web窗体都可以使用它。路由更加灵活,在将上下文传递到处理代码、处理回发等方面做得更好。

    您也可以使用 IIS7 Rewrite Module 在执行ASP.NET代码之前,在Web服务器级别处理重写。关于如何做到这一点,有一些很好的信息 here .

        2
  •  6
  •   AndyMcKenna    16 年前

    SO的URL重写由ASP.NET MVC中的路由引擎提供。

        3
  •  5
  •   Ahmet Kakıcı    16 年前

    这种技术称为“URL重写”。您将问题标记为“asp.net”,以便msdn可以帮助您: http://msdn.microsoft.com/en-us/library/ms972974.aspx

        4
  •  5
  •   Cyril Gupta    16 年前

    StackOverflow是在ASP.NET MVC中编程的,URL路由是MVC中包的标准部分。除了URL路由之外,它还提供了更多的优势。因此,如果您正在构建一个新的网站,并且希望获得URL路由的其他优点,请尝试在MVC中创建它。

    不过,请注意,你得多学一点。

        5
  •  1
  •   Community CDub    8 年前

    这种技术叫什么?

    正如其他人所说,这种技术被称为 routing . 基本上,它采用了您漂亮的格式URL,并将其映射到某个控制器操作。根据乔恩·盖洛韦的说法 answer IIS 7集成了此功能。对于以前版本的IIS,如果您选择的Web框架不提供路由功能,您可能需要设置一个通配符应用程序映射到ASP.NET运行时,并可能将自己的httpmodule添加到应用程序的请求管道中,以处理路由。

    你是如何达到 将页面标题添加到 带分隔符的URL?

    您可以通过降低标题的大小写并用连字符替换非字母数字字符来完成这一任务。有时这种钻头被称为鼻涕虫。你可能还想把弹头的长度放低,这样你就不会碰到 URL length limit 问题。您还可以选择在几个位置生成段塞:

    • 当标题被提交时,用其余的页面数据保存slug。
    • 或者在生成链接到带有标题的页面的页面时即时生成。

    记住,不应该使用slug来查找页面数据,这就是页面ID的用途;slug应该是可选的。路由规则只关心从URL中获取ID,并将其提供给正确的控制器操作,同时忽略之后的所有操作。换句话说,唯一关键的部分是问题ID。这个鼻涕虫只是糖。:)

        6
  •  0
  •   Kobi    16 年前

    虽然在这里路由显然是更好的选择,但是有一些方法可以用最少的努力来伪造它。例如,下面是获取友好URL和一些SEO的简单方法:
    假设你有这个页面:

    example.aspx
    

    即使不做任何事情,以下URL 工作:

    example.aspx/some-friendly-text
    

    还可以组合查询数据:

    example.aspx?id=1
    example.aspx/some-friendly-text?id=1
    

    如果需要,可以使用请求的 PathInfo property .

        7
  •  0
  •   Vicky    16 年前

    别忘了,通过这种类型的路由,人们可以使用您可能不希望使用的文本链接到您的页面。

    我在英国的报纸上见过很多这样的报道,他们会发布一个带有网址的报道

    newspaperdoman.co.uk/articles/1128945/dog-bits-man

    然后有人会链接到它作为

    newspaperdoman.co.uk/articles/1128945/newspaper-in-crap-story-shocker

    或者什么。