URLs:短横线和下划线的区别

232

在你的URL中,使用连字符还是下划线更好?

应该选择/about-us还是/about_us

从可用性角度来看,我个人认为对最终用户来说/about-us更好,但Google和大多数其他网站(以及JavaScript框架)使用下划线命名模式。这只是样式问题吗?连字符有兼容性问题吗?


6
为什么不*/index____1125.aspx*(有四个下划线,非常重要!)? - Christian Davén
7
在一个肯定是相关话题的网站上重复提问。 - Mark Amery
4
Google工程师的好视频解释:https://www.youtube.com/watch?v=AQcSFsQyct8 - JohnB
1
来这里是为了弄清楚 whether_domain_URLs_can_have_underscores.com 是否可以有下划线。 - neverMind9
相关:https://dev59.com/Nmkv5IYBdhLWcg3w3Eel - Anton Tarasenko
TL;DR:域名不能包含下划线(不允许)。在域名之后的url部分可以包含下划线,虽然不建议使用(最好使用破折号,因为它能更好地与搜索引擎进行排名)。 - stevec
18个回答

233

6
谷歌没有解释原因?据说这可能与他们解析地址的方式有关?或者可能只是一个终端用户问题。 - xji
15
值得注意的是,在某些设备上,双击可以选择整个带下划线的文本,而在移动设备上长按则可以实现相同的功能。然而,使用破折号分隔的文本则需要逐个选择每个单词。考虑是否有用户会尝试从URL中复制某些内容。 - Tito
3
我觉得@Titus可能陷入了因果循环,因为这与实际情况完全相反...英语中有单词中的破折号,但没有下划线。 - billjamesdev
1
我的猜测是,在谷歌看来,使用下划线、连字符或不使用任何符号并没有区别。谷歌选择了对人类最易读的方式,即使用连字符。 - Arthur Tarasov
1
请查看 https://youtu.be/AQcSFsQyct8 以获取 Google 的解释。(他们使用“_”进行精确搜索匹配。) - Matt Ke
我简直不敢相信谷歌如此无能,他们的网络爬虫不能将连字符和下划线视为同等。 - endolith

88

以下是支持使用短横线的几点原因:

  • Google更推荐使用短横线而不是下划线(来源)。
  • 对终端用户来说,短横线更为熟悉。
  • 在标准键盘上,短横线比下划线更容易打出(无需按Shift键)。
  • 短横线不会被下划线隐藏。
  • 在URL的上下文中,短横线感觉更本地化,因为它们在域名中是允许的。

1
另外一个缺点是:破折号在语言中有特定的用途,而下划线则没有。因此,下划线可以代表空格,而破折号可以保留它们的目的。例如:https://en.m.wikipedia.org/wiki/Catherine_Zeta-Jones(该系统在维基百科上运作良好!)。 - rybo111
2
哦,Dash 的另一个好处是:当你用英语读出 URL 时,“dash” 只有一个音节,而“underscore” 则有三个音节。 - rybo111

58

不仅是破折号和下划线的区别:

  • 含有空格的文本
  • 没有空格的文本
  • URL中编码的空格
  • 下划线表示空格
  • 破折号表示空格
  • 加号表示空格
  • 驼峰命名法
  • 帕斯卡命名法
  • 用引号括起来的带空格的文本 (单引号与双引号)
  • 斜杠表示空格
  • 点表示空格

62
欢迎来到狂野的网络世界! - Even Mien
1
当优雅地使用时,我非常喜欢斜杠/意味/空格。我运营的其中一个网站使用/about/us以及其他各种/about/页面。不过我不记得看到过更多主流的例子。 - Sekalf Nroc

38

过去,Google没有将下划线视为单词分隔符,我认为这很疯狂,但显然现在它已经这样做了。正因为有这样的历史,破折号更受欢迎。尽管从SEO角度来看现在下划线也是可以接受的,但我仍然认为破折号是最好的选择。

一个好处是,普通半电脑文盲的网民更容易在键盘上输入破折号,他们可能甚至不知道下划线是什么。


11
普通的半电脑文盲网络用户很难区分地址栏和搜索栏。普通用户更有可能点击而不是输入。只是这么说一下。 - Armstrongest
2
谷歌仍然不将下划线视为单词分隔符:http://www.youtube.com/watch?v=AQcSFsQyct8 - Sembiance

31

这只是一个猜测,但似乎他们选择的是人们最可能不会在名称中使用的那个。这样您就可以拥有包含连字符单词的名称,并仍然使用下划线作为单词分隔符,例如 UseTwo-wayLinks 可以转换为 use_two-way_links。

在您的示例中,/about-us 将是一个名为“about-us”的带有连字符的目录(如果存在这样的单词),而 /about_us 将是一个名为“about us”的两个词语转换为非空白字符的单个字符串的目录。


15
合理的猜测,但事实证明完全不正确。-1。 - Mark Amery
2
你有@MarkAmery的参考资料吗?问题是围绕着为什么Google会使用下划线。如果你暗示他们不使用,那不是这个回答的问题,而是问题本身的问题。 - billjamesdev
1
感谢@GerardONeill。这是一个非常古老的回复,现在这个页面上所说的很多内容可能已经不太准确,甚至更加不相关了。 - billjamesdev
2
@GerardONeill 引用:Google Webmasters 的这个视频:https://www.youtube.com/watch?v=AQcSFsQyct8。根据该视频(尽管现在已经有6年了,可能不代表当代现状),`foo_bar`被视为一个单词,而`foo-bar`则被视为两个单词 - 正是这个答案所推测的情况的完全相反。 - Mark Amery
3
我明白你的意思,你只是在转述别人一段时间前说过的话,但听到“foo_bar”被视为一个单词,这难道不让你感到不协调吗?因为实际上没有带下划线的单词存在。而“self-esteem”则是英语中完全有效的复合词,应该作为一个整体可搜索。 - billjamesdev
显示剩余4条评论

16

我以前经常使用下划线,现在只在不想让任何人直接链接的网站部分中使用它们,例如js文件、css等。

从SEO的角度来看,破折号似乎是处理这个问题的首选方式。详细解释请参见http://www.mattcutts.com/blog/dashes-vs-underscores/

另一个问题似乎更多地出现在普通公众身上而不是程序员身上,即当具有下划线的超链接被下划线标记时,您无法看到下划线。高级用户可以解决这个问题,但普通公众可能无法解决。

但是,在编码中仍然更喜欢使用下划线而不是破折号 - 程序员会理解它们,大多数其他人则不会。


13

+1 是因为它提到了 Google 的期望,我猜这比外观更重要。 - TJ L

9

我更喜欢使用下划线。首先,它们与我常规编程经验中的variable_names_are_not-subtraction相匹配;其次,我认为这已经提到过了,单词可以有连字符,但它们从来没有下划线。举个非常愚蠢的例子,“Nation-state country”和“nation state country”是不同的。前者翻译成“国家集合的土地”(想象一下“这里是枪支聚集地!最好走开,你听到了吗?”),而后者看起来像是一些近义词的列表。http://example.com/nation-state-country/似乎并不意味着与http://example.com/nation-state_country/相同,但如果连字符是单词中的分隔符或空格,那么它就可以。后者似乎更清楚实际用途,而前者看起来更像那个列表,如果说有什么的话。


2
只是一点小提示,像Lisp或Scheme这样的语言通常使用用破折号分隔的变量/函数名称,因为减号只是一个像其他任何函数一样的函数标识符(实际上,它们允许在标识符中使用更大的字符集)。 - J S
文章Dashes vs. Underscores in URLs提出了类似的观点;它还参考了连字符vs下划线在URL中的应用的更具体例子。 - davidvandebunte

8

SEO大师Jim Westergren在2005年从严格的SEO角度进行了测试,并得出结论:+(加号)实际上是最好的单词分隔符。然而,这似乎不合理,可能是由于搜索引擎算法中的错误。他建议使用-(破折号)来提高可读性和SEO。


5

下划线替代空格,以避免不允许使用空格的情况。破折号可以作为单词的一部分,因此将已经包含破折号的单词用破折号连接起来会很丑陋/令人困惑。

不好的写法:

/low-budget-movies

好的:

/low-budget_movies

40
我不同意这种说法。现在通常使用短横线而不是下划线。非程序员认为下划线在视觉上不够美观。第一个例子没有问题。实际上,它更易读友好。 - allesklar
9
从语义上来说,您是正确的,但在URL中使用这种区别可能会更加混乱而不是有用。人们更容易记住"a-b-c-d-e"而不是"a-b_c-d_e"。 - Wadih M.
有人告诉Jeff他需要重写标签系统... - user1228
1
真的吗?@Wadih,如果人们拼写单词正确,那么“low-budget_movies”就没有什么难记的了。你不需要记住它比“low-budget电影”这几个单词更多。当然,如果你只使用a、b、c、d、e等字母,那么它就没有意义了。“Low-budget”和“low budget”是*不同的,这是确定的。 - fletom
不好的写法:/low-budget-movies,不好的写法:/low-budget_movies,好的写法:/low-budget%20movies。 - Mikhail Antonov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接