代码之家  ›  专栏  ›  技术社区  ›  Matt Peterson

什么是“友好的URL”?

  •  56
  • Matt Peterson  · 技术社区  · 16 年前

    我最近读了很多关于“友好URL”的讨论(包括在本网站和其他网站上),但我不确定究竟是什么使URL“友好”以及为什么我们真的在乎(在一定程度上)。插图:

    以下是当前大多数Web开发人员认为“友好”的URL示例:

    www.my blog.com/posts/123/this-is-the-name-of-my-blog-post

    然而,这被认为是“不友好的”(即坏的,尼安德特人,无知的,愚蠢的):

    www.myblog.com/posts.aspx?ID=123

    我的问题:

    • “友好”URL是否包含有关该博客文章的重复标识信息?换句话说,一旦你有了帖子的ID(123),为什么你需要标题?这难道不是违反了“不要重复自己”的咒语吗?
    • 就用户而言,URL的形式有什么不同?用户是否真的 类型 手动完整的URL(当然不是TLD)?用户是否曾经通过查看页面的URL来确定页面是关于什么的?为什么我们需要在URL中显示博客文章的标题?这不是网页上的内容吗? <title> 标签和内容用于?
    • 我经常听到搜索引擎优化作为一个原因,为什么“友好”的网址形式是首选。为什么搜索引擎蜘蛛会关心URL?它们不只是自动的软件片段来对页面(以及其中包含的其他页面的链接)进行爬行吗?如果搜索引擎是像其他软件组件(例如数据库访问组件)一样编写的,那么URL将只是它们的一个无意义的标识符(类似于关系数据库中的rowguid)。如果我设计一个数据库模式,将上面的“友好”URL作为表的主键,我会(非常正确地)被咀嚼掉。

    我之前说过“到一定程度”,因为很明显,URL会失控。这是亚马逊网站上的一个实际网址,我认为任何一个头脑正常的人都不会认为它是“友好”的:

    http://www.amazon.com/Bissell-Kitchen-Housewares/b/ref=amb_link_5001972_17?ie=UTF8&node=694500&pf_rd_m=ATVPDKIKX0DER&pf_rd_s=gp-center-5&pf_rd_r=1ZXNJFE0CCFFDH4B9HGH&pf_rd_t=101&pf_rd_p=405478901&pf_rd_i=510080

    19 回复  |  直到 16 年前
        1
  •  58
  •   Matt Howell    16 年前

    TimBerners-Lee(WWW的设计师)写道 a great article about this subject 大约10年前。

    • 您的示例是一个错误的URL——但不仅仅是因为它有一个ID和一个“slug”(页面标题的缩写、连字符形式)。 从长远来看,将页面标题放入URL是有问题的。 内容 随时间变化。如果您更改了该博客文章的标题,您将被迫在保留旧的URL或更改URL以匹配新标题之间进行选择。更改URL将断开以前指向该页的任何链接;不更改它意味着您将拥有与该页不匹配的URL。这对用户都不好。最好还是一起去 www.myblog.com/posts/123 .

    • 用户通常需要输入一个URL,但更重要的是,有时他们也会编辑现有的URL来查找站点中的其他页面。因此, 拥有可发现的URL通常很好 . 例如,如果我想看到帖子124,我可以很容易地看到当前的URL,并认为我想看到的页面的URL是www.myblog.com/posts/124。这是一个用户友好的水平,对那些试图找到他们想要的东西的人来说是一个很大的帮助。包括其他信息(比如文章的主题)可能会使这成为不可能——所以这会减少我的探索选择。

    • 忘记搜索引擎优化 . 搜索引擎技术一段时间以来一直在降低SEO黑客的有效性。好的内容仍然是王道——从长远来看,你将无法与系统进行博弈。

        2
  •  18
  •   James Brady    16 年前

    对我来说, 友好网址 这意味着有人试图在URL中包含语义信息,以使其更适合人类消费。这是一个有趣的例子,一个计算机-计算机接口被扩充并建立在它之上,以形成一个更好的人机界面。

    因此,在您的两个示例中:

    • www.myblog.com/posts/123/this-is-the-name-of-my-blog-post 是友好的,因为您已经在URL中包含了标题-it 讲述 你对这页有点了解。
    • www.myblog.com/posts.aspx?id=123 不友好是因为它神秘而晦涩:对数据库来说是完全有意义的,但对你我都没有。

    友好的URL在某些情况下非常好,而在其他情况下则毫无用处。基本上,如果一个用户要接触到它,我会优先考虑友好的URL创建,这不仅仅是一个美学问题。它使它 许多的 如果你能很快地看到和理解各种选项是什么,那么从地址栏返回到URL就更容易了,而且如果你跟踪网页上的链接,那么从地址栏返回到URL就更容易了。

    将所有这些与firefox 3+中的棒工具栏结合起来(当然也会出现在其他浏览器中),当你处理友好的URL时,地址栏中的自动完成功能会变得非常强大。

        3
  •  11
  •   Adam Lassek    16 年前

    关于querystring对爬虫有什么影响,似乎有很多相互矛盾的信息,但共识是,拥有多个参数会损害你的seo,因为一个长的querystring变量表示动态内容,所以大多数搜索引擎对你的页面的索引攻击性要小得多。

    向URL添加一个slug,例如 这是我博客的名字 从您的示例中,还可以使您的链接与一个简单的ID号更为不同,并将更重要的单词添加到URL中。这些都是搜索引擎所寻找的。

    就我个人而言,我发现这样的URL在视觉上更容易解析,因为使用的标点符号更少,而且查询字符串中的名称-值对可能非常冗长,很难记住。

        4
  •  7
  •   Gary Green    16 年前

    关于如何在URL中放置不必要的信息,这是一个很好的观点。

    http://stackoverflow.com/questions/522466/what-makes-a-friendly-url
    

    一旦知道了唯一的ID 522466,剩下的就没用了,所以它只是让URL看起来“不错”,并为用户提供关于页面链接到什么的概念。但这又产生了另一个问题。大多数网站不“验证”URL的那一部分,因此您可以--

    http://stackoverflow.com/questions/522466/omg-goatse-bought-by-bill-gates
    

    但它仍然会链接到这篇文章。你可以看到这是怎么造成的 更多 比它们价值更大的问题,因为它们可能被恶意使用。

    我觉得迪格采取了正确的方法。他们的URL中不使用ID。在后台,他们从数据库中获取的ID完全来自给定的标题。

    http://digg.com/linux_unix/I_Like_Linux_so_my_aunt_sends_me_this_for_Christmas
    

    对我来说,这是 很完美 网址。它提供了我在单击链接时所需的所有安全信息。

    事实上,标题扮演着如此巨大的角色,以至于在Digg的世界里,人们“盲目的挖掘”纯粹是基于他们喜欢或感兴趣的标题。如果你的网址看起来很有趣,你很可能会得到更多的流量到你的网站。同时,你会使它更用户友好,更漂亮,搜索引擎会感谢你。据我所知,友好的URL对每个人都是双赢的。

        5
  •  6
  •   ahockley    16 年前

    我对你的三颗子弹的看法:

    • 我想说这不是一个最佳的网址。我不知道为什么一个人会同时显示文章标识符和标题。我从来没有在我的网址中包含帖子ID,只有标题和(有时)日期
    • 对于用户来说,越短越好。
    • 搜索引擎查看URL。不管这是否有意义,他们都有。在URL中使用关键字将提供一些SEO好处。
        6
  •  4
  •   JMD    16 年前

    我正好同意你的看法,但是 不要告诉任何人。

    这只是我的拙见,但我觉得这很愚蠢

    http://stackoverflow.com/questions/522466/
    

    http://stackoverflow.com/questions/522466/what-makes-a-friendly-url
    

    是同一页。我的意思是,我可以看到用连字符连接的问题标题为URL提供了一些上下文,但是除非你知道该部分是可选的,否则URL会变得更长,不必要。

        7
  •  4
  •   John Sheehan    16 年前

    首先,他们对搜索引擎爬虫很友好。Google和其他公司对URL中与页面上的单词匹配的单词赋予了很高的价值,因此如果你的博客标题在URL中,它将帮助你的搜索引擎榨汁。

    第二,他们对不知道他们在访问什么的人很友好。如果你的twitter/email/im/etc出现,你更可能点击哪些链接来进行比较?

        8
  •  4
  •   Beska    16 年前

    啊……诀窍是URL对谁友好。搜索引擎认为第一个URL更友好,因为它显然在URL中包含内容信息,并且看起来不像是用不同参数重复相同的页面。

    例如,比较

    www.aTvShowSite.com/show.aspx?id=123
    www.aTvShowSite.com/show.aspx?id=124
    

    一个机器人会说“好吧,我不知道这些是什么……但它们在我看来是同一页。”

    鉴于比较

    www.aTvShowSite.com/shows/AmericanIdol
    www.aTvShowSite.com/shows/Lost
    

    使它们看起来像不同的页面(即使服务于它们的ASPX页面可能是相同的),机器人倾向于将它们排列得更高。

    编辑: 此外,应该注意的是,许多机器人通过查看URL的文本来确定有用性,因此搜索“lost”可能比搜索第一个更容易击中第二种类型的URL,即使页面内容相同。

        9
  •  4
  •   OscarRyz    16 年前

    至于:

    这难道不是违反了“不要重复自己”的咒语吗?

    指的是应用程序 代码!! 不是应用程序本身!!

    这是完全有意义的

    • 标签中的标题
    • 在URL中
    • 作为内容的第一行。

    几乎所有其他地方的内容都需要它。

    如果你的代码看起来像这样,“咒语”指的是什么:

      <title><%=obj.getTitle()%></title>
      Reading:<h1><%=obj.getTitle()%></h1>
      Link to this:<a href="getHrefFor( object.getTitle() )">obj.getTitle()</a>
      Etc. etc.
    

    而不是在应用程序周围使用复制/粘贴代码的不同方法。

        10
  •  3
  •   UncleZeiv    16 年前

    您显示的“不友好”URL公开了一个实现细节:如果将来某个时候,您决定删除ASP并使用其他东西,会怎么样?您必须更改所有URL(baad!)或采用更名方案。

    在URL中重复标题也许没有那么必要,但是当你粘贴很多链接时,再次检查你链接到了正确的位置,这会很方便。

        11
  •  2
  •   CunningPike    16 年前

    我们的网站使用所谓的“不友好”的网址,但我们为特定的地点创建了特殊的“友好”的网址,这些地点是公众用于特定功能的,特别是在印刷材料上。

    例如,我们的停车票 http://www.dnv.org/parking 在他们身上。

    人物配对关系

        12
  •  1
  •   Rook    16 年前

    首先,请尝试将字符与(a-z,a-z,0-9)分开,当然:/.-从URL中删除。 不是每个人的键盘上都有所有的键盘(例如,我的键盘上没有&键,我也没有~)

    例如,当进行一些URL解析或类似的操作时,如果URL语法是“干净的”,也会有所帮助。

        13
  •  1
  •   Peter Morris    16 年前

    第二个URL看起来更用户友好,而第一个看起来更搜索引擎友好。

    搜索引擎为出现在URL中的单词提供了更高的相关性。域名得到最高的(因为它不能更改),其余的URL得到高优先级,因为长度有限,然后分析文档的正文。

    我的回答是非常主观的,因为这取决于你是否对人友好(易于手动输入,或是对朋友阅读),或者你是否对搜索引擎友好(提高排名)。

        14
  •  1
  •   John    16 年前

    在这种情况下,它并没有真正打破枯燥的原则,因为就搜索引擎而言,“522466”与“什么是友好的URL”是不同的。

    一般来说,对于StackOverflow这样的站点,令牌是唯一重要的信息;通常,您可以在这之后放置您想要的任何内容,它将带您到相同的位置(被Web服务器忽略)。

    页面描述仅用于帮助搜索引擎识别页面的内容(这很好)

        15
  •  1
  •   JW.    16 年前

    另一点:人们有时会手动编辑URL,以便进入目录树。所以他们可能会尝试加载类似 http://site.com/a/b ,获取“未找到”错误,然后尝试 http://site.com/a http://site.com . 当然,如果您的URL不是基于实际的目录树,那么这可能不起作用。但你仍然可以尝试支持它。

    有些浏览器甚至鼓励这样做,比如IE的错误消息,以及Safari的右键单击页面标题时出现的菜单。

        16
  •  1
  •   Robbie Mitchell    15 年前

    马特和@bigmattyh:seo不是“黑客”:它理解“好内容”在网络上的含义。页面标题是内容的一部分。链接中良好的锚定文本是“良好的内容”(而不是使用像“单击此处”这样的词作为链接文本)。把链接放在上下文而不是列表中是“好内容”。

    页面标题是低挂水果,但它们仍然是提高SERP的最简单方法之一。是的,入站链接(及其质量)是至关重要的,但是标题可以创造奇迹,特别是在短期内。您不必使用页面标题(可能会不时更改)作为文章标题:手动总结内容。

    不要猜测这些内容:(a)阅读seomoz.org等资料;(b)严格分析你自己的网站。

        17
  •  0
  •   Elzo Valugi    14 年前

    术语 可读网址 也经常使用。使用友好/可读的URL是一种源于SEO的技术,就是这样。否则路径越短越好。通常重写规则 减慢 将页面快速传送到客户机的过程,因此也要考虑到这一点。

        18
  •  0
  •   noun    10 年前

    在我看来,ID和UUID不应该是URL的一部分,永远不应该。

    1)有些NoSQL数据库根本不使用ID,它们使用UUID。UUID很长,部分用破折号分隔。谷歌会把破折号当作一个单词分隔符:这意味着你的网址会有5个无用的关键字。

    2)人类不了解ID或UUID。一个人能理解单词和说话的网址。

    3)如果标题改变,你可以像WordPress那样简单地进行重定向,比如@trig pointed。

    4)最后,记住使用日期,这样你就可以分辨出两篇标题相同、在不同年份、月份或日期发布的文章。例如,您可以对同一本书进行两次评论(第一版和第二版)。

    http://example.com/2013/02/11/data-mining-concepts-and-techniques
    

    http://example.com/2011/05/23/data-mining-concepts-and-techniques
    

    5)日期还可以帮助任何用户确定内容是最近的还是不是最近的。

    6)日期会给你的网址添加一个重要的关键词:年份。假设我想看到世界上最漂亮的女孩,我会在谷歌上输入:“2014年世界上最漂亮的女孩”。我的网址是:

    http://example.com/2014/07/10/the-most-beatiful-girls-in-the-world
    

    7)最后但并非最不重要的是,chrome缓存了您访问的站点,因此您可以在地址栏“girls”中找到上述站点。

        19
  •  -3
  •   user6537033    8 年前

    可读URL这个术语也被大量使用。使用友好/可读的URL是一种源于SEO的技术,就是这样。否则路径越短越好。