URL末尾加“/”和不加“/”的区别(随手记)

9 阅读2分钟

快速总结:

  1. 主要影响服务器如何解析请求相对路径的解析方式
  2. /代表访问的是目录;不加/代表访问的是文件

加 / 和不加 / 影响服务器如何解析请求

  • /结尾的URL,表示目录: 例如https://example.com/blog/表示的是请求blog目录下的默认文件,一般是/blog/index.html(默认文件)
  • 不以/结尾的URL,表示文件; 例如https://example.com/blog表示访问的是/目录下的blog文件,即/blog这个文件。 那假如没有blog文件,但有blog目录的话,服务器可能会301重定向https://example.com/blog/index.html中。

加 / 和不加 / 影响相对路径的解析方式

浏览器会根据是否有/来判断访问的是目录还是文件,然后据此去解析resource的相对路径。

假设有一个resource关联的文件是相对路径的,例如<img src="image.jpg">

  • 访问以/结尾的URL,https://example.com/blog/: 该resource在服务器中的解析后的路径为/blog/image.jpg。 因为blog/表示的是一个目录,所以该resource的相对路径代表的是该blog目录下的image.jpg文件。
  • 访问以不以/结尾的URL,https://example.com/blog: 该resource在服务器中的解析后的路径为/image.jpg。 因为blog表示的是一个文件,所以该resource的相对路径代表的是与该blog文件同级的目录中的image.jpg文件。

SEO最佳实践

  • 搜索引擎会将/结尾的URL识别为目录
  • 建议保持URL形式的一致性(要么都带/,要么都不带)
  • 示例对比:
  • 在服务器的目录下,尽量保证不要出现同名的目录和文件

API规范

对于网站提供的API接口,需要参照API文档的规范,否则可能出现拒绝访问或非预期结果的可能。

总结对比

URL 形式解析对象具体结果
https://example.com/blog/目录通常返回 blog/ 下的默认文件(如 index.html),相对路径解析基于 blog/
https://example.com/blog资源(或重定向到目录)可能被解析为文件,或服务器重定向到 blog/目录下的默认文件,相对路径解析可能发生非预期结果