URL:破折号与下划线 [关闭]

Posted

技术标签:

【中文标题】URL:破折号与下划线 [关闭]【英文标题】:URLs: Dash vs. Underscore [closed] 【发布时间】:2010-09-12 06:28:19 【问题描述】:

应该是 /about_us 还是 /about-us

从可用性的角度来看,我个人认为 /about-us 对最终用户来说要好得多,但 Google 和大多数其他网站(和 javascript 框架)使用下划线命名模式。只是风格问题吗?破折号是否存在兼容性问题?

【问题讨论】:

为什么不用/index____1125.aspx(那是四个下划线,很重要!) Duplicate question on a site where this issue is definitely on-topic. 来自 Google 工程师的精彩视频讲解:youtube.com/watch?v=AQcSFsQyct8 来到这里了解whether_domain_URLs_can_have_underscores.com 相关:***.com/questions/10302179/… 【参考方案1】:

From Google Webmaster Central

考虑在你的 网址。网址 http://www.example.com/green-dress.html 比对我们有用得多 http://www.example.com/greendress.html。 我们建议您使用连字符 (-) 而不是你的下划线 (_) 网址。

【讨论】:

Google 没有解释原因?据说这与他们解析地址的方式有关?或者可能只是最终用户的问题。 还值得注意的是,underscored_text 可以通过在某些设备上双击并在手机上长按来作为一个整体进行选择,而对于 dash-separated-text,相同的操作会选择每个分隔的单词。想想用户是否会尝试从 url 中复制一些内容 我认为你可能在@Titus 那里遇到了一个因果循环,因为这与实际情况完全相反......英语,它的文字有破折号,但没有下划线。 我的猜测是没有区别,至少对于谷歌来说,是否有'_','-'或什么都没有。谷歌采用了我认为对人类来说最易读的东西,破折号 请参阅youtu.be/AQcSFsQyct8 了解 Google 的说明。 (他们使用“_”进行精确搜索匹配。)【参考方案2】:

这里有几点支持破折号:

Google 建议使用破折号而不是下划线 (source)。 最终用户更熟悉破折号。 破折号更容易在标准键盘上书写(无需 Shift)。 破折号不会隐藏在下划线后面。 破折号在 URL 的上下文中感觉更原生,因为它们在域名中是允许的。

【讨论】:

【参考方案3】:

这不仅仅是破折号与下划线:

带空格的文本 没有空格的文本 编码%20spaces%20in%20URL underscore_means_space 破折号表示空格 加号+表示+空格 驼峰式 帕斯卡大小写 " 带空格的引用文本" (以及单引号与双引号) 斜线/表示/空格 dot.means.space

【讨论】:

欢迎来到狂野的狂野网络! 我非常喜欢优雅地使用斜线/手段/空格。我运行的网站之一使用 /about/us 以及其他各种 /about/ 页面。不过,我不记得看到过更多主流的例子。【参考方案4】:

Google 过去没有将下划线视为单词分隔符,我认为这很疯狂,但现在显然是这样。由于这段历史,破折号是首选。尽管从 SEO 的角度来看,现在允许使用下划线,但我仍然认为破折号是最好的。

一个好处是,一般半电脑文盲的网络冲浪者更有可能在键盘上键入破折号,他们甚至可能不知道下划线是什么。

【讨论】:

一般的半电脑文盲网络浏览者不太可能分辨地址栏和搜索之间的区别。您的普通用户也更有可能点击而不是输入。只是说' Google 仍然不将下划线视为单词分隔符:youtube.com/watch?v=AQcSFsQyct8【参考方案5】:

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

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

【讨论】:

合理的猜测,但事实证明,完全不真实。 -1. 你有那个@MarkAmery 的参考吗?问题围绕着为什么谷歌会使用下划线。如果您建议他们不这样做,那不是这个答案的问题,而是问题的问题。 首先,根据猜测,非常合理。作为猜测的一部分,我补充说程序员使用破折号作为减法,所以使用下划线;也许由程序员创建的 URL 遵循该约定。不过,实际的解释会更好。标记以 -1 升级,没有任何备份;希望我能给评论一个-1。 @GerardONeill 引用:此视频由 Google 网站管理员提供:youtube.com/watch?v=AQcSFsQyct8。根据该视频(诚然,现在已有 6 年历史,可能不代表当代现状),foo_bar 被视为一个词,而 foo-bar 被视为两个词 - 与此答案推测的情况恰恰相反。 @MarkAmery 我听到你在说什么,而且你真的只是在转述别人刚才的话,但听到“foo_bar”被视为字,当它完全不能是一个时(因为没有带下划线的词)。而“自尊”在英语中是一个完全有效的复合词,应该可以作为一个单一的实体进行搜索?【参考方案6】:

我以前一直使用下划线,现在我只使用它们来表示我不想让任何人直接链接的网站部分,js 文件,css 等。

从 SEO 的角度来看,破折号似乎是处理它的首选方式,详细解释,来自马口 http://www.mattcutts.com/blog/dashes-vs-underscores/。

另一个似乎发生的问题,一般公众比程序员更多,是当带有下划线的超链接加下划线时,您看不到下划线。高级用户会解决这个问题,但 Joe Public 可能不会。

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

【讨论】:

【参考方案7】:

Jeff 对此有一些想法:https://blog.codinghorror.com/of-spaces-underscores-and-dashes/

两者都有缺点。我建议你选择一个并保持一致。

【讨论】:

+1 因为它提到了谷歌的期望,我猜这比它看起来更重要。【参考方案8】:

我更喜欢使用下划线。首先,它们与我在variable_names_are_not-subtraction 的常规编程经验相匹配,其次,我相信这已经提到过,单词可以有连字符,但它们从来没有下划线。举一个非常愚蠢的例子,“民族国家”与“民族国家”不同。前者翻译成“民族国家的土地”(想想“这里是枪支国家!最好继续前进,你听到了吗?”),而后者看起来像一个有时同义词的列表。 http://example.com/nation-state-country/ 似乎与http://example.com/nation-state_country/ 的含义不同,但是,如果连字符是分隔符/“空格”除了单词中的字符,它可以。后者似乎更清楚实际目的,而前者看起来更像那个列表,如果有的话。

【讨论】:

顺便说一句,像 Lisp 或 Scheme 这样的语言习惯使用用破折号分隔的变量/函数名称,因为减号只是函数的标识符,就像其他任何语言一样(事实上,它们允许更大的字符集在标识符中)。【参考方案9】:

SEO 大师Jim Westergren tested this 早在 2005 年就从严格的 SEO 角度得出结论,+(加号)实际上是最好的单词分隔符。但是,这似乎不合理,可能是由于搜索引擎算法中的错误。他推荐 - (破折号)以提高可读性和 SEO。

【讨论】:

【参考方案10】:

下划线替换不允许空格的空格。破折号(连字符)可以是单词的一部分,因此将单词与已经包含连字符的连字符连接起来是丑陋的/令人困惑的。

不好:

/low-budget-movies

好:

/low-budget_movies

【讨论】:

我不同意这一点。如今,习惯上只使用破折号。非程序员发现下划线在视觉上没有吸引力。第一个例子没有错。其实读起来更友好。 在语义上你是对的,但这种区别可能比在 URL 中的使用更令人困惑。人们更容易记住“a-b-c-d-e”而不是“a-b_c-d_e”。 有人告诉 Jeff 他需要重写标签系统... 真的吗? @Wadih,如果人们拼写正确,那么关于低预算电影就没有什么难记的了。您不必记住“低预算电影”这两个词。当然,当你只使用 a、b、c、d、e 时,就没有意义了。 “低预算”与“低预算”时期相同。 坏:/low-budget-movies,坏:/low-budget_movies,好:/low-budget%20movies【参考方案11】:

从用户的角度来看,我认为 dash 更好,并且不会干扰 SEO。

不确定下划线约定的开始位置或原因。

懂一点的debate

【讨论】:

【参考方案12】:

我更喜欢破折号,因为下划线可能会在一定程度上被链接下划线所掩盖。文本 URL 主要是为了一目了然,而不是语法正确,因此保留破折号以用于连字符的说法是有限的。

文本 URL 的准确性很重要,在将其朗读给某人时,您不希望将下划线与空格混淆(反之亦然)。

我还发现破折号更美观,如果这很重要的话。

【讨论】:

【参考方案13】:

对于最终用户视图,我更喜欢“about-us”或“about us”而不是“about_us”

【讨论】:

【参考方案14】:

就我个人而言,我会避免使用 about-us 或 about_us,而只使用 about。

【讨论】:

/about/us/no/seriously/this/is/it :) 这是您的解决方案吗?好吧,“about_our_customers”或我能想出的可能相关的无数“abouts”中的任何一个呢?忽略问题!= 解决方案。【参考方案15】:

一些较旧的网络托管和 DNS 服务器实际上在解析 URL 的下划线时存在问题,因此这可能会在此类约定中发挥作用。

【讨论】:

是的,但这只是在主机名中。 错了。所有 DNS 服务器都存在下划线问题,因为下划线在域名中不是合法字符;时期。如果您不相信我,请检查标准。但是 DNS 服务器只解析 URL 的主机部分,没有其他内容,这个问题与主机部分或 DNS 名称无关。【参考方案16】:

我个人会避免使用所有破折号和下划线,并选择camelCase 或PascalCase(如果在代码中)。

关于 camelCase 的***文章解释了它的起源背后的一些原因。它们相当于

    不喜欢的懒程序员 伸手去拿_键 关于可能的混淆 可读性 施乐 PARC 的“Alto”​​键盘 没有下划线键。

如果用户要查看字符串,那么我不会执行上述任何操作并使用“关于我们”。或者“AboutUs”,如果我不得不这样做的话,因为 camelCase 已经在产品名称等某些领域传播到了常见用法。即 ThinkPad、TiVo

【讨论】:

搜索引擎如何知道单词的开头或结尾? 为什么搜索引擎不能像处理任何其他分隔符一样处理 PascalCase,无论是 _、- 还是 : ? 好建议...这个问题是在询问代码。 url [通常] 不区分大小写,并且通常以小写形式显示。 @dI-_-Ib 只有域名不区分大小写。该路径区分大小写,使骆驼和帕斯卡风格成为可行的选择。虽然,通过使用它们,您可以有效地使它们代表的单词不区分大小写。在我看来,这将是该选项的最大问题。【参考方案17】:

URL 中允许使用空格,因此您可以在链接中使用“/about us”(尽管它会被编码为“/about%20us”。但老实说,这始终是个人喜好,所以有这里没有真正的答案。

我会遵循破折号可以出现在单词中的约定,因此应该将空格转换为下划线。

【讨论】:

【参考方案18】:

更好地使用 . - / 作为分隔符,因为 _ 似乎不是分隔符。

http://www.sistrix.com/blog/832-how-long-may-a-linktext-be.html

【讨论】:

以上是关于URL:破折号与下划线 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何用破折号替换codeigniter url中的下划线?

生成 SEO 友好的 URL(slug)[关闭]

网址:Dash vs. Underscore [关闭]

想要通过任何字母数字和下划线、破折号和句点

Apache - 将下划线转换为标题中的破折号

如何验证字符串是不是仅包含字母、数字、下划线和破折号?