什么使得“友好的URL”?

我最近在网站和其他地方阅读了很多关于“友好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的forms有什么不同? 用户是否真的手动input完整的URL(当然除了TLD)呢? 用户是否查看页面的URL来确定页面的内容? 为什么我们需要URL中的博客文章的标题? 这不是页面的<title>标签和内容的用途吗?
  • 我经常听到SEO是为什么“友好”的URL表单是首选的原因。 为什么一个search引擎蜘蛛关心的URL? 他们不只是抓取页面的自动化软件(以及包含在其中的其他页面的链接)? 如果search引擎是像其他软件组件(例如数据库访问组件)一样编写的,那么URL就只是一个无意义的标识符(类似于关系数据库中的rowguid)。 如果我正在devise一个类似上面的“友好”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

Tim Berners-Lee(WWW的devise师)在10年前写了一篇关于这个主题的大文章 。

  • 你的例子是一个错误的URL – 但不仅仅是因为它有一个ID和一个“slu”“(缩写,连字符forms的页面标题)。 将网页标题放入您的url是长期存在的问题。 内容随着时间改变。 如果您更改了该博客文章的标题,您将被迫在保留旧url或更改url以匹配新标题之间进行select。 更改url将打破任何以前的链接到该网页; 而不是改变它意味着你将有一个不匹配页面的URL。 对用户来说都不好。 最好只是去http://www.myblog.com/posts/123

  • 用户通常需要键入一个URL,但更重要的是,他们有时也会编辑现有的URL来查找网站中的其他页面。 因此, 有可发现的URL往往是好事 。 例如,如果我想查看post#124,我可以轻松查看当前的URL,并确定我想查看的页面的URL是www.myblog.com/posts/124。 这是一个用户友好的水平,可以帮助人们试图find他们正在寻找的东西。 包括其他信息(如post的主题)可以使这不可能 – 所以它减less了我的探索选项。

  • 忘记SEO 。 search引擎技术已经在一段时间内降低了SEO黑客的效率。 良好的内容仍然是国王 – 从长远来看,你将无法游戏系统。

对我来说, 友好的URL意味着有一些尝试在URL中包含语义信息,使其更适合人类消费。 这是计算机与计算机界面的一个有趣的例子,它正在被扩充,并被build立在一个更好的人机界面上。

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

  • www.myblog.com/posts/123/this-is-the-name-of-my-blog-post是友好的,因为你已经在URL中包含标题 – 它告诉你一些关于页面的东西。
  • www.myblog.com/posts.aspx?id=123是不友好的,因为它是模糊的和模糊的:它对数据库来说是完全有意义的,但对你或我来说都没有。

友情链接在某些情况下非常棒,而在其他情况下则毫无用处。 基本上,如果一个用户将要接触到它,我会把友好的URL创build作为一个优先事项,这不仅仅是一个美学问题。 如果您可以快速查看并理解各种选项,那么从地址栏返回url变得更加容易,此外,如果您要跟踪来自networking的链接,则可以更明显地看到您要去的地方页。

将所有这一切与Firefox 3+中的真棒栏目结合在一起(当然也会出现在其他浏览器中),并且在处理友好的URL时,地址栏中的自动完成function变得非常强大。

好像有很多关于查询string对search引擎有什么影响的信息,但是共识是有很多的参数会损害你的search引擎优化,因为一个很长的查询stringvariables表示dynamic内容,所以大多数的search引擎会很多积极索引您的网页。

从你的例子中为你的url添加一个slu </s>,例如这是我的博客的名字 ,也使得你的链接比一个简单的ID号码更加不同,并且将更重要的单词添加到url。 这些都是search引擎寻找的东西。

就我个人而言,我发现这样的url更容易进行视觉分析,因为使用的标点符号较less,查询string中的名称 – 值对可能非常冗长而难以记忆。

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

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

一旦知道了唯一的ID 522466,剩下的就没用了,所以它纯粹是为了使URL看起来很“好”,并为用户提供关于页面链接的想法。 但这又造成了另一个问题。 大多数网站不会“validation”url的那一部分,所以你可以把 –

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

但是它仍然会链接到这个post。 你可以看到这可能会导致更多的问题比他们的价值,因为他们可以被恶意使用。

我觉得Digg已经采取了正确的做法。 他们不使用他们的URL中的ID。 在幕后,他们纯粹从给出的标题中获得数据库中的ID。

 http://digg.com/linux_unix/I_Like_Linux_so_my_aunt_sends_me_this_for_Christmas 

这对我来说是一个完美的url。 它为我提供了点击链接所需要的所有信息。

实际上,标题扮演着如此巨大的angular色,在digg的世界里,人们完全是基于他们喜欢标题或对其感兴趣的事实而“盲目地发现”。 如果你的url看起来很有趣,你可能会获得更多的stream量到您的网站。 同时你会让它更加用户友好,更漂亮,search引擎会感谢你。 据我所知,友好的网站为每个人赢得胜利。

我对你三颗子弹的想法:

  • 我会说这不是一个最佳的url。 我不知道为什么会显示post标识符和标题。 我永远不会在我的url中包含postID,只有标题和(有时)date
  • 对于用户来说,越短越好。
  • search引擎看看url。 无论是否合理,他们都这么做。 在URL中的关键字将提供一些search引擎优化的好处。

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

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

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

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

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

首先,他们对search引擎爬虫很友善。 谷歌和其他人对网页中与单词相匹配的文字进行了高度的重视,所以如果您的博客文章的标题位于url中,这将有助于您的search引擎果汁。

其次,他们对不知道他们访问的人友善。 你用来比较的链接是哪一个,如果你的twitter / email / IM / etc中有这个链接,你更可能点击它们?

呃…诀窍是url对谁友好。 search引擎认为第一个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 

使他们看起来像不同的页面(即使它可能是相同的页面服务他们),机器人往往排名他们更高。

编辑:另外,应该指出的是,许多机器人看url的文本来确定有用的,所以search“失去”可能会比第一个更多的url,即使页面内容是相同的。

至于:

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

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

这是完全有道理的

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

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

如果你的代码应该是这样的:“口头禅”指的是什么:

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

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

你展示的“不友好的”URL暴露了一个实现细节:如果在将来的某个时候你决定放弃ASP并使用其他的东西呢? 你将不得不改变所有的url(baad!)或采用重命名scheme。

在URL中重复标题可能不是必要的,但是当你进行大量的链接粘贴时,变得非常方便,再次检查你是否链接到了正确的位置。

我们的网站使用所谓的“不友好”的url,但是我们为特定位置的特定位置创build特殊的“友好”url,特别是在印刷材料上。

例如,我们的停车票有他们的http://www.dnv.org/parking

CP

那么,首先,尝试保持字符(az,AZ,0-9)和当然:/._-不在URL中。 不是每个人都有他们的键盘上的所有(例如,我没有我的键盘上,我也没有〜)

例如,做一些URLparsing或类似的东西,也有助于如果URL语法是“干净的”

第二个url看起来更加用户友好,而第一个网页看起来更加友好。

search引擎对URL中出现的单词有更高的相关性。 域名得到最高(因为它不能改变),URL的其余部分得到高优先级,因为长度是有限的,然后分析文档的主体。

我的回答是相当主观的,因为这取决于你是否友好(容易手工input,或者读给朋友),还是你对search引擎友好(提高你的排名)。

在这种情况下,它并没有真正打破DRY本质,因为就search引擎而言,'522466'与'what-makes-a-friendly-url'不同,

通常对于像StackOverflow这样的网站来说,令牌是唯一重要的信息; 通常情况下,您可以在该点之后放置任何你想要的东西,它会把你带到同一个地方(被networking服务器忽略)。

页面描述只是为了帮助search引擎识别页面是关于什么(这是很好的)

还有一点:人们有时会手动编辑URL,以便上到目录树。 所以他们可能会尝试加载一个页面,如http://site.com/a/b ,得到一个“未find”的错误,然后尝试http://site.com/a或http://site.com 。 当然,如果你的URL不是基于实际的目录树,这可能不起作用。 但是你仍然可以尝试支持它。

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

马特和@bigmattyh:SEO不是“黑客”:它理解什么是“好内容”在networking上的含义。 网页标题是内容的一部分。 链接中的好锚文本是“好内容”(而不是像“点击这里”这样的词作为链接文本)。 把链接放在上下文中而不是列表是“好内容”。

网页标题是低下的成果,但它们仍然是改善SERP的最简单方法之一。 是的,入站链接(和它们的质量)是至关重要的,但标题可以创造奇迹,尤其是在短期内。 您不必使用页面标题(可能会随时更改)作为post标题:手动汇总内容。

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

术语可读的url也使用了很多。 使用友好/可读的url是一种SEO技术,就是这样。 否则path越短越好。 重写规则通常会减慢将页面快速传递给客户端的过程,因此也要考虑到这一点。

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

1)一些NoSQL数据库根本不使用ID,它们使用UUID。 UUID很长,部分使用破折号分隔。 谷歌会像短语分隔符那样对待一个破折号:这意味着你的url将有5个更无用的关键字。

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

3)如果标题改变,你可以简单地做一个像WordPress这样的redirect,就像@TRIG指出的那样。

4)最后,记得使用一个date,所以你可以辨别两个具有相同标题的文章,并在不同的年份,月份或date中发布。 例如,你可以有同一本书的两个评论(第一版和第二版)。

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

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

5)date也将帮助任何用户确定内容是否是最新的或不是。

6)date会为您的url添加重要的关键字:年份。 假设我想要看世界上最美丽的女孩,我会inputGoogle:“2014年世界上最美丽的女孩”。 我的url是:

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

7)最后但并非最不重要的一点,Chrome浏览器caching你访问的网站,所以你可以find上面的网站,只需在地址栏中input“女孩”。

术语可读的url也使用了很多。 使用友好/可读的url是一种SEO技术,就是这样。 否则path越短越好。