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

Den*_*nis 263 url seo url-rewriting url-design trailing-slash

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

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

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

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

Rae*_*ald 155

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

  • child相对/base//base/child.
  • child相对于/base(也许是令人惊讶的)/child.

  • 有用的文章对此有深入的了解:https://cdivilly.wordpress.com/2014/03/11/why-trailing-slashes-on-uris-are-important/ (4认同)
  • 是的,我认为这与SEO一起是这个问题最重要的事情. (3认同)
  • @JacekJ 所有 URL 都代表资源;这就是 URL 中的 R 所代表的意思。 (2认同)

Dem*_*tic 128

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

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

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

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

另一个很好的阅读资料来源:维基百科:URI Scheme

根据RFC 1738,它定义了1994年的URL,当资源包含对其他资源的引用时,它们可以使用相对链接来定义第二个资源的位置,就像说"在与此处相同的位置,除了以下相对路径".它接着说,这种相对URL取决于包含针对其相对链接是基于分层结构的原始URL,并且该FTP,HTTP,和文件的URL方案是一些可以考虑分级的例子,与层次结构的组件由"/"分隔.

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

也:

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

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

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

来源:Google WebMaster中心博客 - 削减或不削减

最后:

  1. URL末尾的斜杠使地址看起来"漂亮".

  2. 最后没有斜杠但没有扩展名的URL看起来有些"怪异".

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

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

  • @nicogawenda,.htaccess可以做各种各样的魔法;)你的CSS可能实际上是一个php文件! (10认同)
  • 我不确定"最后"部分中的第1和第2点是否仍然准确.多年来,这是最初写的,味道已经改变.我没有详细研究过这个问题,但似乎在较新的网站上,省略斜线更常见,更"漂亮". (10认同)
  • Web服务器通常默认设置为在访问目录时提供`index.html`(或类似命名的文件),因此`/ foo /`是`/ foo/index.html`而没有额外的混乱.此外,在过去,浏览器会将"/"附加到域名,但是他们(Firefox,Chrome,Opera)在访问主页时已经改为省略`/`. (4认同)
  • 我同意@bfrohs.目前,目录的默认页面违反了这一原则.如果我们要强制执行'trailing slash = directory',那么所有指向目录的url肯定必须返回目录列表或403 forbidden http响应. (4认同)
  • 这很奇怪,您不能将文件命名为“样式表/”-无论 URL 看起来如何,斜线或无斜线都是服务器上完全不同的资源 (2认同)
  • 带斜杠的 URL 看起来很漂亮?我认为恰恰相反,到目前为止我更喜欢没有斜线。它更干净、更优雅。 (2认同)
  • 这个答案中的研究工作很好。可惜最后的结论纯属主观。 (2认同)

Yar*_*rin 58

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

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

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

  • "在目录之后,而不是在资源之后斜杠":URL不引用两种类型的东西,"资源"和"目录"; 他们指的是一种东西:资源.线索在URL的R中. (49认同)
  • *nix文件系统中的所有内容都是文件,但目录仍然存在.你想说什么? (30认同)
  • 无论是由文件还是内部目录服务,用户看到的只是一个网页.http://www.example.com/about/实际上可以从http://www.example.com/about/index.html上阅读. (6认同)
  • 我同意你的结果,但我不确定我们应该设计我们的URL系统来模拟*nix风格的文件系统.这可能最初有助于达到目的,但现在更不用说了. (2认同)

nic*_*nda 25

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

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

您的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.现在它被搞砸了.服务器找不到具有该名称的文件,而是提供您的Big Lebowski文件,而不是您的DVD目录列表.

因此,您删除该文件并告诉该人重新加载页面.您的服务器查找该/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/其重定向到的HTTPS URL customer/login/.您最终会遇到大量不必要的HTTP重定向(=其他请求),这会使用户体验变慢.

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

摘要:

  • 如果它结束/永远不会是一个文件.没有服务器猜测.

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

  • 即使您确实意味着削减版本也省略了额外的HTTP请求惩罚,省略斜杠.这总是很糟糕(想想移动延迟)并且比"漂亮的URL"更重要 - 特别是因为爬虫并不像SEO那样愚蠢或者想让你相信;)

  • 我不明白你的例子.什么文件系统允许目录和另一个具有相同名称的常规文件(`dvd`)? (7认同)
  • 总而言之,你们都赞成在末尾添加斜杠吗?:) (6认同)
  • 当你的意思是我时,我全都在使用它;)例如,谈到控制器和动作,它将是:控制器应该以斜线结束.引用文件或操作时省略斜杠 (2认同)

mus*_*hil 18

当你让你的网址/about-us/(用斜线),它很容易启动一个单独的文件index.html,然后在以后进行扩展,并添加更多的文件(例如our-CEO-john-doe.jpg),甚至建立在它之下(例如一个层次/about-us/company/,/about-us/products/根据需要,等等),而不更改已发布的网址.这为您提供了极大的灵活性.

  • 对不起,我没理解.如果我从`/ about-us`或`/ about-us /`开始,如果扩展目录,我仍然需要在两种情况下更改已发布的U​​RL.在这两种情况下,新文件都是`/ about-us/new-file.html`!我在这里想念的是什么? (8认同)
  • 仅供参考 - 我不相信以上任何一条是真的 - 为什么不能有`/about-us`和`/about-us/company`?在提供文件方面,Apache 和 IIS 都可以很好地处理这个问题,所以我不同意。 (3认同)
  • @sean2078 是的,但是如果你想从 `/about-us` 链接到 `/about-us/company`,你必须使用 `href="/about-us/company"` 或 `href="。/公司”`(不过不确定那个)。但是,如果你在 `/about-us/` 上,这很简单:`href="company"`。 (3认同)
  • @Accountant我认为OP可能会认为如果你发布"/ about-us"而没有斜杠,那么你以后就不能使用相对路径添加子资源了.当您没有尾部斜杠时,浏览器会认为在about页面上对"ceo.jpg"的引用将存在于您域的根目录并将请求example.com/ceo.jpg.使用斜杠,浏览器将请求example.com/about-us/ceo.jpg,您可以在展开时静态地为您的站点路由整个文件夹树. (2认同)

Aar*_*age 10

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


Ste*_*ler 10

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

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

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

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

  • 我实际上已经在 Google 上看到了这个问题。那是几年前的事了,所以我不确定今天是否仍然如此。 (2认同)
  • 呵呵,这是一个很好的数据点。尽管我们仍然不知道这是否是由其他原因引起的。 (2认同)
  • 维基百科有大量有关 Windows com 文件的信息:https://en.wikipedia.org/wiki/COM_file “执行首选项”和“.com 扩展名的恶意使用”部分说明了计算机病毒和其他病毒如何使用它们。恶意软件。 (2认同)

rio*_*iot 5

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

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

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

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

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