【问题标题】: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)是否以不同方式处理这些请求?

【问题讨论】:

  • 小记:那些是正斜杠,不是反斜杠。

标签: django apache url webserver


【解决方案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。

        【讨论】:

          猜你喜欢
          • 2016-06-27
          • 1970-01-01
          • 2011-09-13
          • 2010-10-13
          • 1970-01-01
          • 2012-10-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多