我什么时候应该在我的网址中使用尾部斜杠?

时间:2011-05-10 10:27:21

标签: url url-rewriting seo trailing-slash url-design

何时应在URL中使用尾部斜杠?例如 - 我的网址应该是/about-us/还是/about-us

我完全了解SEO相关的问题 - 重复的内容和规范的事情;我正试图弄清楚我应该在单独提供的上下文中使用哪一个。

例如,我的同事认为末尾的斜杠意味着它是一个“文件夹” - 一个“目录”,所以这不是一个正确的风格。但我认为最终没有斜线 - 它也不太正确,因为它几乎看起来像一个文件夹,但它不是,它也不是普通文件,而是没有扩展名的文件名。

有没有正确的方法知道使用哪个?

9 个答案:

答案 0 :(得分:146)

这不是偏好问题。 /base/base/具有不同的语义。在许多情况下,差异并不重要。但是,当存在相对URL时,这很重要。

    相对于child
  • /base//base/child
  • child相对于/base(可能是令人惊讶的)/child

答案 1 :(得分:123)

在我个人看来,尾随斜杠被滥用了。

基本上,URL格式来自相同的UNIX格式的文件和文件夹,稍后在DOS系统上,最后适用于网络。

  

本书在类Unix操作系统上的典型URL是文件路径,例如file:///home/username/RomeoAndJuliet.pdf,用于标识保存在本地硬盘上的文件中的电子书。

来源:Wikipedia: Uniform Resource Identifier

阅读的另一个好消息来源:Wikipedia: URI Scheme

  

根据RFC 1738,它定义了1994年的URL,当资源包含对其他资源的引用时,它们可以使用相对链接来定义第二个资源的位置,就像说“在与此处相同的位置,除了以下相对路径“。它继续说这些相对URL依赖于包含相对链接所基于的层次结构的原始URL,以及ftp,http,    和文件URL方案是可以被视为分层的一些示例,,层次结构的组件由“/".

分隔

来源:Wikipedia Uniform Resource Locator (URL)

此外:

  

这是我们经常听到的问题。转到答案!从历史上看,带有斜杠的URL表示目录是常见的,而没有尾部斜杠的URL也是如此    表示文件:

     

http://example.com/foo/(带尾部斜杠,通常是目录)

     

http://example.com/foo(没有斜杠,通常是文件)

来源:Google WebMaster Central Blog - To slash or not to slash

最后:

  1. 网址末尾的斜杠使地址看起来“漂亮”。

  2. 最后没有斜线且没有扩展名的网址看起来有些“怪异”。

  3. 你永远不会命名你的CSS文件(例如)http://www.sample.com/stylesheet/你会吗?

  4. 但是无论环境如何,我都是网络最佳实践的支持者。 它可能是不明确的,也不清楚,正如你所说的没有分机的URL。

答案 2 :(得分:57)

我总是对在非目录URL(WordPress等)中大量使用尾部斜杠感到惊讶。这真的不应该是一个或者是辩论,因为在资源之后放一个斜杠在语义上是错误的。 Web旨在提供可寻址的资源,这些地址 - URL - 旨在模拟* nix风格的文件系统层次结构。在这种情况下:

  • 斜杠始终表示目录,而不是文件。
  • 文件可以命名为任何内容(带或不带扩展名),但不能包含或以斜杠结尾。

使用这些指南,在非目录资源之后放置斜杠是错误的。

答案 3 :(得分:24)

这不是一个美学问题,而是一个技术差异。目录的思考是完全正确的,几乎解释了一切。让我们解决一下:

你现在回到了石器时代,或者只是提供静态页面

您的Web服务器上有一个固定的目录结构,只有静态文件,如图像,HTML等等 - 没有服务器端脚本或任何其他。

浏览器请求/index.htm,它存在并传递给客户端。后来你有很多 - 比方说 - 评论的DVD电影和/dvd/目录中每个电影的html页面。现在有人请求/dvd/adams_apples.htm并且它已经发送,因为它在那里。

有一天,有人只是请求/dvd/ - 这是一个目录,服务器正试图找出要传递的内容。除了访问限制等等,还有两种可能:向用户显示目录内容(我敢打赌你已经在某处看过)或显示默认文件(在Apache中它是:DirectoryIndex: sets the file that Apache will serve if a directory is requested.

到目前为止一切顺利,这是预期的情况。它已经显示了处理方面的差异,所以让我们进入它:

上午5:34,您上传文件时出错了

(这是完全可以理解的。)因此,您做了一些完全错误的事情而不是上传/dvd/the_big_lebowski.htm您将该文件作为dvd(没有扩展名)上传到/

有人为您的/dvd/目录列表添加了书签(当然您不想创建并始终更新那个漂亮的index.htm)并且正在访问您的网站。目录内容已经交付 - 一切正常。

有人听说过您的列表并正在输入/dvd。现在它被搞砸了。服务器找到一个具有该名称的文件,而不是您的DVD目录列表,并提供您的Big Lebowski文件。

因此,您删除该文件并告诉该人重新加载该页面。您的服务器会查找/dvd文件,但它已消失。然后,大多数服务器会注意到有一个具有该名称的目录,并告诉客户端它正在寻找的内容确实在其他地方。答案很可能是:

带有Status Code:301 Moved Permanently

Location: http://[...]/dvd/

因此,完全无视对目录或文件的看法,服务器只能处理这些内容,除非另有说明,否则决定“斜杠与否”的含义。

最后,收到此回复后,客户端加载/dvd/,一切正常。

没事吗?否。

“很好”对你来说还不够

您有一些动态页面,其中所有内容都传递给/index.php并进行处理。到目前为止,一切都运作良好,但整个事情开始变得缓慢,你进行调查。

很快,您会注意到/dvd/list的行为完全相同:重定向到/dvd/list/,然后内部翻译为index.php?controller=dvd&action=list。一个额外的要求 - 但更糟! customer/login重定向到customer/login/,后者又会重定向到customer/login/的HTTPS网址。您最终会有不必要的HTTP重定向(=其他请求),这会使用户体验变慢。

这里很可能你也有一个默认目录索引:index.php?controller=dvd没有action只是在内部加载index.php?controller=dvd&action=list

要点:

  • 如果以/结尾,则永远不会成为文件。没有服务器猜测。

  • 斜杠或没有斜线是完全不同的含义。“斜线或无斜杠”之间存在技术/资源差异,您应该了解它并相应地使用它。仅仅因为服务器很可能加载/dvd/index.htm - 或加载正确的脚本内容 - 当你说/dvd时:它就是这样做的,但不是因为你提出了正确的请求。这应该是/dvd/

  • 忽略斜线,即使你确实意味着斜线版本会给你一个额外的HTTP请求惩罚。哪个总是坏的(想想移动延迟)和比“漂亮的URL”更重要 - 特别是因为爬虫并不像SEO那样愚蠢或者想让你相信;)

答案 4 :(得分:18)

当您创建网址/about-us/(带有斜杠)时,可以轻松地从单个文件index.html开始,然后再展开它并添加更多文件(例如{{ 1}})或甚至根据需要在其下构建层次结构(例如our-CEO-john-doe.jpg/about-us/company/等),而不更改已发布的U​​RL 。这为您提供了极大的灵活性。

答案 5 :(得分:10)

这里的其他答案似乎倾向于省略尾随斜杠。有一种情况下,尾随斜杠将有助于搜索引擎优化(SEO)。这种情况是您的文档看起来不是.html的文件扩展名。对于评估网站的网站而言,这会成为一个问题。他们可能会在这两个网址之间做出选择:

  • http://mysite.example.com/rated.example.com
  • http://mysite.example.com/rated.example.com/

在这种情况下,我会选择带有斜杠的。这是因为.com扩展名是Windows可执行命令文件的扩展名。搜索引擎和病毒检查程序通常不喜欢看起来可能包含通过此类机制分发的恶意软件的URL。尾随斜线似乎可以缓解任何问题,允许页面在搜索引擎中排名并通过病毒检查程序获取。

如果您的网址在文件部分中没有.,那么为了简单起见,我建议省略尾部斜杠。

答案 6 :(得分:9)

谁说文件名需要扩展?有时看一下* nix机器......
我同意你的朋友,没有拖尾斜线。

答案 7 :(得分:2)

从SEO角度来看,选择是否在URL末尾添加斜杠是无关紧要的。如今,在网上经常看到这两种示例。网站不会受到任何惩罚,这种选择也不会影响您网站的搜索引擎排名或其他SEO注意事项。

只需选择您喜欢的URL命名约定,并在每个网页的<head>部分中添加一个规范的meta标记即可。

搜索引擎在遇到一个带有和不带有斜杠(即example.com/about-us/example.com/about-us)的网页时,可能会将单个网页视为两个单独的重复URL。

最佳做法是在每个页面上都包含一个规范的meta标记,因为您无法控制其他网站如何链接到您的URL。

规范标签如下:<link rel="canonical" href="https://example.com/about-us" />。使用规范的meta标记可确保搜索引擎仅对您的每个URL计数一次,无论其他网站链接到您的网站时是否在其后面加上斜杠。

答案 8 :(得分:1)

尾部斜杠对于您的根域或子域无关紧要。 Google 认为两者是等价的。

但尾部斜杠对其他一切都很重要,因为 Google 将两个版本(一个带有尾部斜杠,一个没有)视为不同的 URL。 按照惯例,URL 末尾的尾部斜杠 (/) 表示该 URL 是文件夹或目录。

末尾不带斜杠的 URL 过去表示该 URL 是一个文件。

Read more

Google recommendation