You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于相对URL与末尾斜杠的疑问:MDN路径示例与RFC 3986合并规则冲突

关于相对URL与末尾斜杠的疑问:MDN路径示例与RFC 3986合并规则冲突

这个问题确实戳中了相对URL解析里最容易踩的坑——末尾斜杠的有无直接决定了基准URI的路径分段逻辑,我来帮你理清楚这里的矛盾根源:

首先,先明确你提到的RFC 3986核心规则:

RFC 3986 states:
return a string consisting of the reference’s path component appended to all but the last segment of the base URI’s path (i.e., excluding any characters after the right-most “/” in the base URI path, or excluding the entire base URI path if it does not contain any “/” characters).

把这个规则翻译成开发者更容易理解的话:

  • 如果基准URI的路径末尾没有斜杠(比如 https://developer.mozilla.org/en-US/docs/Learn),那么路径的最后一段(这里的Learn)会被当作「单个资源/文件名」,合并相对路径时会被替换掉,只保留它前面的目录部分来追加新路径。
  • 如果基准URI的路径末尾带有斜杠(比如 https://developer.mozilla.org/en-US/docs/Learn/),那么整个路径到斜杠为止都被当作「目录」,相对路径会直接追加在这个目录的后面。

回到你的例子拆解:

  • 你推导的正确结果 https://developer.mozilla.org/en-US/docs/Skills/Infrastructure/Understanding_URLs,对应的是基准URI不带末尾斜杠的情况:基准路径/en-US/docs/Learn去掉最后一段后是/en-US/docs/,追加相对路径Skills/Infrastructure/Understanding_URLs就得到了这个结果,完全符合RFC 3986的规则。
  • 而MDN示例里的结果 https://developer.mozilla.org/en-US/docs/Learn/Skills/Infrastructure/Understanding_URLs,对应的是基准URI带末尾斜杠的情况:基准路径/en-US/docs/Learn/的最右侧斜杠在末尾,去掉最后一段(这里最后一段是空值)后还是/en-US/docs/Learn/,追加相对路径就得到了MDN展示的结果。

所以这里的“冲突”其实是个误解——问题出在MDN示例的基准URI是否隐含了末尾斜杠。很多网站会对不带斜杠的URL做301重定向(比如访问/Learn会自动跳转到/Learn/),这容易让用户误以为两个URL是等价的,但在URL解析的规则里,它们的处理逻辑是完全不同的。

备注:内容来源于stack exchange,提问作者oeter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 08:50:30