什么时候应该在我的URL中使用尾部斜线?

什么时候应该在URL中使用尾部斜线? 例如 – 我的url应该是/about-us/还是like /about-us

我充分意识到与search引擎优化相关的问题 – 重复的内容和规范的事情; 我试图找出哪一个我应该使用在单独正确服务页面的上下文中。

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

有没有一个适当的方式知道使用哪个?

以我个人的观点来看,后面的斜线是滥用的。

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

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

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

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

根据1994年定义URL的RFC 1738,当资源包含对其他资源的引用时,它们可以使用相对链接来定义第二个资源的位置,就好像在这个地方一样,除了下面的关系path”。 它继续说,这样的相对URL取决于包含相对链接所基于的分层结构的原始URL,并且ftp,http和文件URLscheme是可被认为是分层的一些示例,其中层次结构的组成部分由“/”分开。

来源: 维基百科统一资源定位器(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/你会吗?;

但是,无论环境如何,我都是networking最佳实践的支持者。 它可以是不可靠和不明确的,就像你所说的URL没有分机一样。

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

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

我总是对非目录URL(其中包括WordPress)上广泛使用的尾部斜线感到惊讶。 这实际上不应该是一个二者或者辩论,因为在资源之后放置斜线在语义上是错误的。 Web旨在提供可寻址的资源,而这些地址(URL)被devise用来模拟* nix风格的文件系统层次结构。 在这方面:

  • 斜线总是表示目录,而不是文件。
  • 文件可以被命名为任何东西(带或不带扩展名),但不能包含或以斜线结尾。

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

这不是一个真正的美学问题,而是一个技术上的差异。 目录认为它是完全正确的,几乎解释了一切。 让我们来看看:

你现在回到了石器时代,或者只是服务于静态页面

你的web服务器上有一个固定的目录结构,只有像image,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/目录列表中添加书签(当然你不想创build并且总是更新那个漂亮的index.htm )并且正在访问你的网站。 目录内容交付 – 一切正常。

有人听说你的名单,正在键入/dvd 。 现在它被拧了。 而不是你的DVD目录列表服务器find这个名字的文件,并提供您的Big Lebowski文件。

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

Status Code:301 Moved Permanently Location: http://[...]/dvd/

所以,完全忽视对目录或文件的看法,服务器只能处理这些东西,除非有不同的说法,否则就决定了“是不是”的意思。

最后收到这个响应后,客户端加载/dvd/和一切都很好。

好吗? 没有。

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

你有一些dynamic的页面,一切都传递给/index.php并得到处理。 到现在为止,一切工作都很顺利,但是整个事情开始变得缓慢起来,并且调查。

很快,你会注意到/dvd/list是完全一样的:redirect到/dvd/list/然后在内部翻译成index.php?controller=dvd&action=list 。 一个额外的要求 – 但更糟! customer/loginredirect到customer/login/然后redirect到customer/login/的HTTPS URL。 最终会产生大量不必要的HTTPredirect(=额外的请求),使用户体验变慢。

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

概要:

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

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

  • 即使您确实意味着削减版本,也会省略斜杠,从而导致额外的HTTP请求处罚。 哪个总是不好的(考虑到移动延迟),比“漂亮的URL”更重要 – 尤其是因为爬虫不像SEO相信或者你想要的那样愚蠢)

当你制作URL /about-us/ (带有斜线)时,很容易从一个文件index.html ,然后扩展它并添加更多文件(例如our-CEO-john-doe.jpg )或者甚至根据需要在其下面构build一个层次结构(例如/about-us/company//about-us/products/等), 而不更改发布的URL 。 这给你一个很大的灵活性。

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

其他答案似乎赞成省略斜线。 有一种情况,其中一个斜杠将有助于search引擎优化(SEO)。 那就是你的文件有一个文件扩展名不是.html 。 这成为网站评级网站的问题。 他们可能会select这两个url:

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

在这种情况下,我会select斜线的那个 。 这是因为.com扩展名是Windows可执行命令文件的扩展名。 search引擎和病毒检查者经常不喜欢看起来可能包含通过这种机制分发的恶意软件的url。 最后的斜线似乎可以缓解任何问题,使页面可以在search引擎中排名并通过病毒检查程序获取。

如果你的url没有. 在文件部分,那么我会build议省略斜线为简单起见。