为啥在 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 的末尾需要一个斜杠?的主要内容,如果未能解决你的问题,请参考以下文章