什么时候应该在URL中使用尾随斜杠?例如,我的URL应该看起来像/about-us/还是像/about-us?
我完全意识到seo相关的问题——重复的内容和规范的东西;我正在试图找出我应该在正确地单独提供页面的上下文中使用哪一个。
例如,我的同事认为末尾的斜杠意味着它是一个“文件夹”-一个“目录”,所以这不是一个正确的风格。但我认为最后没有斜杠也不太正确,因为它看起来像一个文件夹,但它不是,它也不是一个正常的文件,而是一个没有扩展名的文件名。
是否有正确的方法知道使用哪种?
什么时候应该在URL中使用尾随斜杠?例如,我的URL应该看起来像/about-us/还是像/about-us?
我完全意识到seo相关的问题——重复的内容和规范的东西;我正在试图找出我应该在正确地单独提供页面的上下文中使用哪一个。
例如,我的同事认为末尾的斜杠意味着它是一个“文件夹”-一个“目录”,所以这不是一个正确的风格。但我认为最后没有斜杠也不太正确,因为它看起来像一个文件夹,但它不是,它也不是一个正常的文件,而是一个没有扩展名的文件名。
是否有正确的方法知道使用哪种?
在我个人看来,后面的斜杠被误用了。
基本上,URL格式来自于相同的UNIX文件和文件夹格式,后来,在DOS系统上,最后,适用于web。
在类unix操作系统上,这本书的典型URL是文件路径,如file:///home/username/RomeoAndJuliet.pdf,用于标识保存在本地硬盘文件中的电子书。
来源:维基百科:统一资源标识符
另一个很好的阅读来源:维基百科:URI Scheme
According to RFC 1738, which defined URLs in 1994, when resources contain references to other resources, they can use relative links to define the location of the second resource as if to say, "in the same place as this one except with the following relative path". It went on to say that such relative URLs are dependent on the original URL containing a hierarchical structure against which the relative link is based, and that the ftp, http, and file URL schemes are examples of some that can be considered hierarchical, with the components of the hierarchy being separated by "/".
来源:维基百科统一资源定位器(URL)
另外:
这是我们经常听到的问题。继续寻找答案吧!从历史上看,通常url末尾带有斜杠来表示目录,而那些末尾没有斜杠来表示目录 表示一个文件: http://example.com/foo/(后面带斜杠,通常是一个目录) http://example.com/foo(没有后面的斜杠,通常是一个文件)
来源:谷歌网站管理员中心博客-削减或不削减
最后:
URL末尾的斜杠使地址看起来“漂亮”。 一个没有斜杠结尾,没有扩展名的URL看起来有点“奇怪”。 你永远不会把你的CSS文件命名为http://www.sample.com/stylesheet/,你会吗?
但我是一个不考虑环境的网络最佳实践的支持者。 它可能是不稳定的和不清楚的,就像你说的URL没有下一个。
我总是惊讶于在非目录url (WordPress等)上大量使用尾随斜杠。这真的不应该是一个非此即彼的争论,因为在资源后面加上斜杠在语义上是错误的。web被设计用来提供可寻址的资源,而这些地址(url)被设计用来模拟*nix风格的文件系统层次结构。在这种情况下:
斜杠总是表示目录,而不是文件。 文件可以命名为任何名称(带或不带扩展名),但不能包含斜杠或以斜杠结尾。
使用这些指导原则,在非目录资源后加上斜杠是错误的。
这不是美学的问题,而是技术上的差异。目录的想法是完全正确的,几乎解释了一切。让我们算算:
你现在回到了石器时代,或者只提供静态页面
你在你的web服务器上有一个固定的目录结构,只有静态文件,如图像,html等等-没有服务器端脚本或任何东西。
浏览器请求/index.htm,它存在并被交付给客户端。之后,你有很多——比方说——DVD电影的评论和一个html页面的每一个在/ DVD /目录。现在有人请求/dvd/adams_apple .htm,它会被传递,因为它就在那里。
在某一天,有人只是请求/dvd/ -这是一个目录,服务器试图弄清楚要交付什么。除了访问限制等等,还有两种可能:向用户显示目录内容(我打赌您已经在某处见过)或显示默认文件(在Apache中是:DirectoryIndex:设置当请求目录时Apache将提供的文件)。
到目前为止一切顺利,这是预期的情况。它已经显示了处理的差异,所以让我们进入它:
早上5:34,你上传文件时出错了
(顺便说一句,这完全可以理解。)因此,您做了一些完全错误的事情,而不是上传/dvd/the_big_lebowski.htm,而是将该文件作为dvd(没有扩展名)上传到/。
有人收藏了你的/dvd/目录列表(当然你不想创建并总是更新那个漂亮的index.htm),并且正在访问你的网站。目录内容已交付-一切正常。
有人听说了你的清单,正在输入/dvd。现在它完蛋了。服务器没有列出你的DVD目录,而是找到一个同名的文件,并传递你的“绿脚趾”文件。
所以,你删除了那个文件,让那个人重新加载页面。您的服务器正在寻找/dvd文件,但是它已经消失了。然后,大多数服务器会注意到有一个具有该名称的目录,并告诉客户端它正在寻找的确实是其他地方。他们的回答很可能是:
状态码:301永久移动位置:http://[…]/dvd/
因此,完全忽略你对目录或文件的想法,服务器只能处理这样的东西,并且-除非另有指示-为你决定“斜杠与否”的含义。
最后,在收到这个响应之后,客户端加载/dvd/,一切正常。
好吗?不。
"还好"对你来说不够好
您有一个动态页面,其中所有内容都传递到/index.php并得到处理。到目前为止,一切都很顺利,但整个事情开始变得缓慢,你开始调查。
很快,你会注意到/dvd/list做的是完全相同的:重定向到/dvd/list/,然后在内部转换为index.php?controller=dvd&action=list。还有一个额外的要求——但更糟糕!customer/login重定向到customer/login/,而customer/login/重定向到customer/login/的HTTPS URL。你最终会有大量不必要的HTTP重定向(=额外的请求),这会让用户体验变慢。
这里很可能还有一个默认的目录索引:index.php?没有动作的Controller =dvd只是在内部加载index.php? Controller =dvd&action=list。
简介:
If it ends with / it can never be a file. No server guessing. Slash or no slash are entirely different meanings. There is a technical/resource difference between "slash or no slash", and you should be aware of it and use it accordingly. Just because the server most likely loads /dvd/index.htm - or loads the correct script stuff - when you say /dvd: It does it, but not because you made the right request. Which would have been /dvd/. Omitting the slash even if you indeed mean the slashed version gives you an additional HTTP request penalty. Which is always bad (think of mobile latency) and has more weight than a "pretty URL" - especially since crawlers are not as dumb as SEOs believe or want you to believe ;)
这里的其他答案似乎倾向于省略后面的斜杠。在一种情况下,后面的斜杠将有助于搜索引擎优化(SEO)。也就是说,您的文档的文件扩展名似乎不是.html。这成为网站评级的一个问题。他们可能会在这两个网址中选择:
http://mysite.example.com/rated.example.com http://mysite.example.com/rated.example.com/
在这种情况下,我会选择后面有斜杠的那个。这是因为。com扩展名是Windows可执行命令文件的扩展名。搜索引擎和病毒检查程序通常不喜欢看起来可能包含通过此类机制分发的恶意软件的url。后面的斜杠似乎减轻了任何担忧,允许页面在搜索引擎中排名,并通过病毒检查。
如果你的url没有。,那么为了简单起见,我建议省略后面的斜杠。
这不是一个偏好的问题。/base和/base/有不同的语义。在许多情况下,这种差异并不重要。但当存在相对url时,这很重要。
Child相对于/base/是/base/ Child。 Child相对于/base是(也许令人惊讶)/ Child。
当你创建你的URL /about-us/(带末尾斜杠)时,很容易从单个文件index.html开始,然后根据需要扩展它并添加更多文件(例如our- ceo -john-do .jpg),甚至在它下面构建一个层次结构(例如/about-us/company/, /about-us/products/等),而不需要更改发布的URL。这给了你很大的灵活性。
从SEO的角度来看,选择是否在URL的末尾包含一个斜杠是无关紧要的。如今,这两种情况在网络上都很常见。网站不会受到任何惩罚,也不会影响你网站的搜索引擎排名或其他SEO考虑因素。
只需要选择一个你喜欢的URL命名约定,并在每个网页的<head>部分包含一个规范的元标签。
搜索引擎可能会认为一个网页是两个独立的重复url,当他们遇到它带有或不带有后面的斜杠时,例如example.com/about-us/和example.com/about-us。
最好的做法是在每个页面上包含一个规范的元标记,因为您无法控制其他站点如何链接到您的url。
canonical标签是这样的:<link rel="canonical" href="https://example.com/about-us" />。使用规范的元标记可以确保搜索引擎只计算你的每个url一次,而不管其他网站链接到你的网站时是否包含一个尾随斜杠。
对于根域或子域,后面的斜杠无关紧要。谷歌认为这两个是等价的。
但后面的斜杠对其他所有内容都很重要,因为谷歌将两个版本(一个带有后面的斜杠,一个没有)视为不同的url。 通常,URL末尾的斜杠(/)意味着URL是一个文件夹或目录。
末尾没有斜杠的URL通常意味着该URL是一个文件。
阅读更多
谷歌的建议