HTML5 <base>标签与根相对URL

7
请帮我理解 <base> 标签的 href 属性功能。
我的网站托管在http://goodsite.org/bob,其他网站托管在http://goodsite.org/others
我计划将我的应用程序迁移到http://bettersite.org/bob
为了支持这一点,我在头部设置了一个基础 URL,<base href="/bob/">
我的链接看起来像这样:<a href="thatonething.img">那个东西</a> 正如我所希望的,我按预期看到了这些链接(例如,"http://goodsite.org/bob/thatonething.img")。
问题: <base> 标签是否普遍支持根相对 URL(即 href="/bob/")?
这在我的测试中似乎有效,但我更难以阅读规范。总的来说,我想知道我是否误用了这个标签。

1
可能是 https://dev59.com/enI-5IYBdhLWcg3wYXL8?rq=1 的重复问题。 - Asons
@LGSon,不是重复的问题。我发帖是因为在阅读该问题后发现缺少与使用根相对(路径绝对)URL相关的信息(即使在所有答案中也是如此)。 - Ynot
如果你搜索 root_,你会找到一些注释,但是这个链接可以澄清问题,并且可能是一个重复的问题:https://dev59.com/t2445IYBdhLWcg3wpLx?noredirect=1&lq=1 - Asons
1
@LGSon,非常感谢您的关注。您提供的链接确实在几个答案中涉及了这个问题。由于已经阅读过那个答案,所以我才创建了这个问题。我知道这是可行的,正如我的问题所证明的那样。我真正希望做的是建立共识,即这实际上是使用基础标签的正确方式(即符合规范)。我尝试解密有关<base>标签的规范,但对我来说太困难了。 - Ynot
1个回答

12

<base>标签能够普遍支持根相对路径的URL(例如href="/bob/")吗?

是的,<base>接受域名相对路径(路径绝对)URL,并会将它们正确地解析为相对于主机名的路径。

<base href="/bob/">意味着你想要所有的路径相对URL(即仅包含路径但/开头的URL)都相对于/bob/, 例如:

  • <a href="foo.html"> 将指向/bob/foo.html,不管域名是什么。

域名绝对和路径绝对链接不会被调整,分别是:

  • <a href="https://stackoverflow.com">仍将指向https://stackoverflow.com,以及
  • <a href="/bar">仍将指向/bar

只要这是你希望路径相对链接的行为,你就没有误用<base>元素。使用<base>元素时,最好定期测试链接以确保它们仍然指向正确的URL。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接