57

我最近(在本网站和其他地方)阅读了大量关于“友好 URL”的讨论,但我不确定究竟是什么使 URL “友好”以及为什么我们真的关心(直到某一点) . 插图:

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

www.myblog.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>标签和内容的用途吗?
  • 我经常听到 SEO 是首选“友好”URL 形式的一个原因。为什么搜索引擎蜘蛛会关心 URL?它们不只是爬取页面(以及其中包含的其他页面的链接)的自动化软件吗?如果搜索引擎像其他软件组件(例如数据库访问组件)一样编写,那么 URL 对它们来说只是一个无意义的标识符(类似于关系数据库中的 rowguid)。如果我正在设计一个数据库模式,将上面的“友好”URL 作为表的主键,我会(非常正确地)被咀嚼。

我之前说过“在一定程度上”,因为很明显,URL 可能会失控。这是来自 Amazon.com 的实际 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

4

20 回答 20

61

Tim Berners-Lee(万维网的架构师)在大约 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 黑客的有效性。好的内容仍然是王道——从长远来看,你将无法玩弄这个系统。

于 2009-02-06T22:37:29.383 回答
18

对我来说,友好的 URL意味着有人尝试在 URL 中包含语义信息,以使其更适合人类消费。这是一个有趣的例子,说明计算机-计算机界面被增强和构建以制作更好的人机界面。

所以,在你的两个例子中:

  • www.myblog.com/posts/123/this-is-the-name-of-my-blog-post是友好的,因为您在 URL 中包含了标题 - 它告诉您有关页面的一些信息。
  • www.myblog.com/posts.aspx?id=123是不友好的,因为它神秘而晦涩:它对数据库非常有意义,但对你或我来说都没有。

友好的 URL 在某些情况下非常棒,而在其他情况下则毫无用处。基本上,如果用户要接触到它,我会优先考虑创建友好的 URL,这不仅仅是美学问题。如果您可以快速查看并了解各种选项是什么,则可以更轻松地从地址栏中返回 URL,此外,如果您正在关注来自网络的链接,它会使您要去的地方更加明显页。

将所有这些与 Firefox 3+ 中令人敬畏的栏(肯定也会出现在其他浏览器中)结合起来,当您处理友好的 URL 时,地址栏中的自动完成功能变得非常强大。

于 2009-02-06T23:58:45.320 回答
11

关于查询字符串对爬虫的确切影响似乎有很多相互矛盾的信息,但共识是拥有多个参数会损害您的 SEO,因为长查询字符串变量表示动态内容,因此大多数搜索引擎会很多不那么激进地索引您的页面。

在您的 url 中添加一个 slug,例如您的示例中的 this-is-the-name-of-my-blog-post,也使您的链接与一个简单的 id 号相比更加不同,并在网址。这些都是搜索引擎寻找的东西。

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

于 2009-02-06T22:29:13.300 回答
7

关于如何在 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

然而它仍然会链接到这篇文章。你可以看到这可能会导致更多的问题而不是它们的价值,因为它们可能被恶意使用。

我觉得 Digg 对此采取了正确的方法。他们不在其 URL 中使用 ID。在幕后,他们完全从给定的标题中获取数据库中的 ID。

http://digg.com/linux_unix/I_Like_Linux_so_my_aunt_sends_me_this_for_Christmas

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

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

于 2009-02-06T23:58:17.740 回答
6

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

  • 我会说这不是最佳 URL。我不知道为什么要同时显示帖子标识符和标题。我的网址中根本不包含帖子 ID,只有标题和(有时)日期
  • 对于用户来说,越短越好。
  • 搜索引擎查看网址。不管是否有意义,他们都这样做了。在 URL 中包含关键字将提供一些 SEO 好处。
于 2009-02-06T22:30:06.013 回答
4

我碰巧同意你的观点,但不要告诉任何人。

这只是我的拙见,但对我来说似乎很愚蠢

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

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

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

于 2009-02-06T22:28:01.620 回答
4

首先,它们对搜索引擎爬虫很友好。谷歌和其他人非常重视 url 中与页面上的单词匹配的单词,所以如果你的博客文章的标题在 URL 中,它将帮助你的搜索引擎榨汁。

其次,他们对不知道他们在访问什么的人很友好。如果您的 twitter/email/IM/etc 中出现了您用于比较的哪些链接,您更有可能点击它?

于 2009-02-06T22:30:46.807 回答
4

啊...诀窍是 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 更多地命中第二种类型的 url。

于 2009-02-06T22:31:14.903 回答
4

至于:

这不是违反“不要重复自己”的口头禅吗?

那是指应用程序代码!!,而不是它自己的应用程序!

完全有道理

  • <title> 标签中的标题
  • 在网址中
  • 作为内容的第一行。

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

如果您的代码应如下所示,那么“口头禅”指的是什么:

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

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

于 2009-02-13T22:31:21.327 回答
3

您显示的“不友好”URL 暴露了一个实现细节:如果将来某个时候您决定放弃 ASP 并使用其他东西怎么办?您将不得不更改所有 URL(糟糕!)或使用重命名方案。

在 URL 中重复标题可能不是必需的,但是当您进行大量链接粘贴时,它会很方便,以仔细检查您是否链接到正确的位置。

于 2009-02-06T22:33:59.627 回答
2

我们的网站使用所谓的“不友好”URL,但我们会为特定位置创建特殊的“友好”URL,供公众用于特定功能,尤其是在印刷材料上。

例如,我们的停车罚单上有http://www.dnv.org/parking

CP

于 2009-02-06T22:47:21.783 回答
1

好吧,首先,尝试将字符与 (az,AZ,0-9) 分开,当然还有 :/._- 在 url 之外。不是每个人的键盘上都有所有这些(例如,我的键盘上没有 &,我也没有 ~)

例如,当做一些 url 解析或类似的事情时,如果 url 语法是“干净的”,也会有帮助

于 2009-02-06T22:28:16.627 回答
1

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

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

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

于 2009-02-06T22:30:20.210 回答
1

在这种情况下,它并没有真正破坏 DRY 原则,因为就搜索引擎而言,“522466”与“what-makes-a-friendly-url”不同

通常对于像 StackOverflow 这样的网站,令牌是唯一重要的信息。通常你可以在那之后放任何你想要的东西,它会把你带到同一个地方(被网络服务器忽略)。

页面描述只是为了帮助搜索引擎识别页面的内容(这很好)

于 2009-02-06T22:39:02.360 回答
1

另一点:人们有时会手动编辑 URL,以便在目录树上向上。因此他们可能会尝试加载类似http://site.com/a/b的页面,得到“未找到”错误,然后尝试http://site.com/ahttp://site.com。当然,如果您的 URL 不是基于实际的目录树,这可能行不通。但是你仍然可以尝试支持它。

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

于 2009-02-07T00:10:53.267 回答
1

马特和@bigmattyh:搜索引擎优化不是“黑客”:它理解“好内容”在网络上的含义。页面标题是内容的一部分。链接中好的锚文本是“好的内容”(而不是使用像“点击这里”这样的词作为链接文本)。将链接放在上下文中而不是列表中是“好的内容”。

页面标题是唾手可得的果实,但它们仍然是改进 SERP 的最简单方法之一。是的,入站链接(及其质量​​)至关重要,但标题可以创造奇迹,尤其是在短期内。您不必使用页面标题(可能会不时更改)作为帖子标题:手动总结内容。

不要猜测这些东西:(a) 阅读 SEOmoz.org 等资源和 (b) 严格分析您自己的网站。

于 2010-01-29T17:29:44.903 回答
0

术语可读 url也被大量使用。使用友好/可读的 url 是一种 SEO 诞生的技术,仅此而已。否则路径越短越好。执行重写规则通常会减慢将页面快速发送到客户端的过程,因此也要考虑到这一点。

于 2010-04-12T11:55:44.653 回答
0

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

1) 一些 NoSQL 数据库根本不使用 ID,它们使用 UUID。UUID 很长,部分使用破折号分隔。Google 会将破折号视为单词分隔符:这意味着您的 url 将有 5 个以上无用的关键字。

2) 人类不理解 ID 或 UUID。一个人理解单词和说话的 URL。

3)如果标题发生变化,您可以像 WordPress 一样简单地进行重定向,就像 @TRiG 指出的那样。

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) 日期将为您的 URL 添加一个重要的关键字:年份。假设我想看看世界上最漂亮的女孩,我会在 Google 中输入:“2014 年世界上最漂亮的女孩”。我的网址将是:

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

7)最后但同样重要的是,Chrome会缓存您访问过的网站,因此您只需在地址栏中输入“女孩”即可找到上述网站。

于 2014-07-13T16:21:17.570 回答
0

主题链接的内页在逻辑上相互配合。这是接收 URL 结构的最佳方式。

在不使用客户端网站的情况下,最好的例子是查看 BBC 网站,这是在最佳实践中完成的:


www.bbc.com/
www.bbc.com/news
www.bbc.com/news/world
www.bbc.com/news/world/australia

内页已正确组织。这是告诉搜索引擎如何在网站上移动的最佳做法。

于 2019-11-12T03:45:06.157 回答
-3

术语可读 url 也被大量使用。使用友好/可读的 url 是一种 SEO 诞生的技术,仅此而已。否则路径越短越好。

于 2016-07-01T07:42:25.447 回答