351

什么时候应该在 URL 中使用斜杠?例如 - 我的 URL 应该看起来像/about-us/还是像/about-us

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

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

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

4

9 回答 9

221

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

  • child相对/base/于是/base/child
  • child相对/base于是(也许令人惊讶)/child
于 2013-05-08T15:51:36.800 回答
153

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

基本上,URL 格式来自相同的文件和文件夹的 UNIX 格式,后来在 DOS 系统上,最后适应了 Web。

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

来源:维基百科:统一资源标识符

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

根据 1994 年定义 URL 的 RFC 1738,当资源包含对其他资源的引用时,它们可以使用相对链接来定义第二个资源的位置,就好像在说:“在同一个地方,除了以下相对小路”。它接着说,这样的相对 URL 依赖于包含相对链接所基于的层次结构的原始 URL,并且 ftp、http 和文件 URL 方案是一些可以被认为是层次结构的示例,其中层次结构的组件由“/”分隔。

来源:维基百科统一资源定位器(URL)

还:

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

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

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

资料来源:Google WebMaster Central Blog - 斜线还是不斜线

最后:

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

  2. 末尾没有斜杠且没有扩展名的 URL 看起来有些“奇怪”。

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

但无论环境如何,我都是网络最佳实践的支持者。正如您所说的没有分机的 URL,它可能很不稳定和不清楚。

于 2011-05-10T11:19:42.263 回答
74

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

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

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

于 2011-09-09T16:40:29.867 回答
40

这实际上不是美学问题,而是技术差异。考虑它的目录是完全正确的,几乎可以解释一切。让我们解决它:

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

你的网络服务器上有一个固定的目录结构,只有图像、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 PermanentlyLocation: http://[...]/dvd/

因此,完全忽略对目录或文件的看法,服务器只能处理此类内容,并且 - 除非另有说明 - 为您决定“斜线与否”的含义。

最后在收到此响应后,客户端加载/dvd/并且一切正常。

好吗?不。

“刚刚好”对你来说还不够好

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

很快,您会注意到它/dvd/list的作用完全相同:重定向到/dvd/list/然后在内部翻译成index.php?controller=dvd&action=list. 一个额外的要求 - 但更糟糕的是!customer/login重定向到customer/login/哪个又重定向到customer/login/. 您最终会有大量不必要的 HTTP 重定向(= 额外请求),这会使用户体验变慢。

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

概括:

  • 如果它以它结尾,/永远不会是一个文件。没有服务器猜测。

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

  • 即使您确实是指斜线版本,省略斜线也会给您额外的 HTTP 请求惩罚。这总是很糟糕(想想移动延迟)并且比“漂亮的 URL”更重要 - 特别是因为爬虫并不像 SEO 相信或希望你相信的那样愚蠢;)

于 2013-04-09T17:44:26.003 回答
23

当您创建您的 URL /about-us/(带有尾部斜杠)时,很容易从单个文件开始index.html,然后根据需要扩展它并添加更多文件(例如our-CEO-john-doe.jpg)甚至在其下构建层次结构(例如/about-us/company//about-us/products/等),而无需更改发布的 URL。这为您提供了极大的灵活性。

于 2014-10-15T17:00:22.647 回答
15

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

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

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

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

于 2013-04-10T10:17:56.340 回答
11

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

于 2011-05-10T10:34:21.277 回答
4

从 SEO 的角度来看,选择是否在 URL 末尾包含斜杠是无关紧要的。这些天来,在网络上看到两者的例子很常见。无论哪种方式,网站都不会受到惩罚,这种选择也不会影响您网站的搜索引擎排名或其他 SEO 考虑因素。

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

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

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

规范标签如下所示:<link rel="canonical" href="https://example.com/about-us" />. 使用规范的元标记可确保搜索引擎只计算您的每个 URL 一次,而不管其他网站在链接到您的网站时是否包含尾部斜杠。

于 2018-09-11T00:54:15.047 回答
1

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

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

末尾没有斜杠的 URL 曾经表示该 URL 是一个文件。

阅读更多

谷歌推荐

于 2021-01-20T10:11:03.757 回答