为啥在 URL 的末尾需要一个斜杠?

Posted

技术标签:

【中文标题】为啥在 URL 的末尾需要一个斜杠?【英文标题】:Why would you need a slash at the end of a URL?为什么在 URL 的末尾需要一个斜杠? 【发布时间】:2010-11-30 05:29:00 【问题描述】:

这些 URL 之间在 URL 末尾有斜杠方面有什么区别吗?

https://drchrono.com/about_us
https://drchrono.com/about_us/

Web 框架和 Web 服务器(例如 Apache、nginx、Django)是否以不同方式处理这些请求?

【问题讨论】:

小记:那些是正斜杠,不是反斜杠。 【参考方案1】:

/ 是分隔符。

来自 RFC

一些 URL 方案(例如 ftp、http 和文件方案)包含 可以被认为是分层的名称;的组成部分 层次结构用“/”分隔。

末尾有 / 表示网址中可能有更多内容。

【讨论】:

【参考方案2】:

它们被作为不同的请求处理,尽管它们最终可能匹配相同的资源/处理程序/例程并以相同的方式处理。

因为带有 / 的应该是类似于目录的东西,所以所有相对链接都将在 / 内,即 previous/target/something ... 而没有的将具有相对链接在同一级别的 previous /某事。

【讨论】:

【参考方案3】:

在没有正斜杠的 Django URL 中,会自动附加一个正斜杠。这是 Django 开发人员的偏好,而不是网络的硬编码规则(我认为它实际上是 Django 中的设置)。

【讨论】:

【参考方案4】:

当涉及到相对 URL 时,浏览器会以不同的方式处理它们。页面位于:

http://server/path

有一个相对链接,如:

<a href='other'>

将该链接解析为:

http://server/other

path 替换为other。而如果起始 URL 是:

http://server/path/

那么解决的链接将是:

http://server/path/other

如果path 是一个目录而不是一个文件,大多数网络服务器会自动从以下位置重定向:

http://server/path

到:

http://server/path/

因为这几乎肯定是你的意思。

【讨论】:

由于自动重定向,如果您使用尾部斜杠编写链接,您将实现页面加载的最小但明显的加速。 IIRC,apache 文档推荐这个。【参考方案5】:

请注意,搜索引擎将这些视为 2 个不同的页面。从而伤害了你的 seo。

【讨论】:

以上是关于为啥在 URL 的末尾需要一个斜杠?的主要内容,如果未能解决你的问题,请参考以下文章

在每个网址的末尾添加一个斜杠?

URL末尾处的斜杠“/”

自动添加的 URL 末尾的 AFNetworking 斜杠

URL重写在末尾添加斜杠会破坏我的css链接

在页面加载时将正斜杠附加到url的末尾

关于tomcat会在url末尾自动追加斜杠(/)