标签必须写在 内且位于所有相对 url 元素之前才生效;写在 或动态插入均无效,仅第一个 生效,href 必须为绝对 url 或根相对路径(如 /),否则解析不可预测。

base 标签写在哪才生效
<base> 必须出现在 里,且必须在所有使用相对 URL 的元素(比如 <a></a>、<img>、<script></script>)之前。如果它被写在 里,或者出现在某个 <link> 或 <script></script> 之后,浏览器会忽略它——但不会报错,页面看起来“好像”能跳转,实际却可能混用当前页路径和 base 路径,造成不可预测的跳转。
常见错误是把它当普通标签随便放,或者动态插入 DOM(比如用 JavaScript append 到 head),此时已解析完的链接不会重新计算 href,只对后续解析的资源生效。
- 只允许一个
<base>标签;写多个时,只有第一个生效 - 若同时设了
href和target,两者独立作用:前者改所有相对 URL 的解析基准,后者改所有无target属性的<a></a>默认打开方式 - HTML5 中
<base>是空元素,不写闭合斜杠也合法(<base href="https://example.com">),但别写成<base>,部分解析器会误判
href 属性值怎么写才不会跳错
href 值必须是绝对 URL(含协议)或根相对路径(以 / 开头)。写相对路径(如 ./assets/ 或 ../api/)会导致行为未定义——多数浏览器会尝试拼接当前文档 URL,结果往往不是你想要的。
例如当前页是 https://site.com/blog/post.html,<base href="static/"> 实际解析出的 base URL 是 https://site.com/blog/static/,而非你预期的 https://site.com/static/。
- 要指向站点根目录下的
/api/v1/,就写<base href="https://site.com/">或<base href="/"> - 协议相对写法(
//cdn.example.com/)可行,但需确保当前页也是同协议加载,否则混合内容风险 - 开发环境常用
<base href="/>%EF%BC%8C%E4%BD%86%E4%B8%8A%E7%BA%BF%E5%90%8E%E8%8B%A5%E9%83%A8%E7%BD%B2%E5%9C%A8%E5%AD%90%E8%B7%AF%E5%BE%84%EF%BC%88%E5%A6%82%20/app/%EF%BC%89%EF%BC%8C%E5%B0%B1%E5%BE%97%E6%94%B9%E6%88%90%20<base%20href=">,否则所有相对链接都 404
target 属性会影响所有 a 标签吗
会,但仅限没有显式设置 target 的 <a></a>。一旦某个 <a href="..." target="_blank"></a> 显式写了 target,<base target="..."> 就完全不干预它。
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
这个特性常被用来统一外链行为:比如 <base target="_blank" href="/"> 让所有没指定 target 的站内链接仍在本页打开,而外链因 href 是绝对 URL 不受 base href 影响,又因没写 target,就自动新窗口打开——但注意,这也会让所有没写 target 的表单提交、脚本加载等默认行为一并改变。
-
<base target="_top">对嵌套 iframe 场景有用,但若页面本身不在 iframe 中,效果与_self无异 - 不要依赖
<base target="_parent">来跳出多层 iframe,不同浏览器处理不一致,尤其在跨域 iframe 下基本失效 - SEO 工具或静态站点生成器(如 Hugo、VuePress)有时会自动注入
<base>,若发现链接异常,先查源码 head 里有没有隐式 base 标签
SPA 路由下 base 标签容易踩什么坑
单页应用(React Router、Vue Router)通常用 <router basename="/app"></router> 处理子路径部署,此时若再加 <base href="/app/">,就会双重解析:路由库把 /app/about 当作路径,浏览器又按 base 把相对链接 "about" 解析成 /app/app/about,直接 404。
根本矛盾在于:前端路由控制的是 JS 内部路径匹配,而 <base> 控制的是 HTML 原生资源解析。二者目标不同,混用极易冲突。
- Webpack/Vite 的
publicPath配置已覆盖资源路径需求,一般不需要额外<base> - 若必须用 base(比如某些 legacy 插件依赖它),确保路由 basename 与 base href 完全一致,且所有
import()动态导入、fetch("/api")等不依赖 base - 构建工具输出的 HTML 若带 base,检查是否来自模板或插件(如 html-webpack-plugin 的
templateParameters),而不是手动加的
真正麻烦的不是写错 base,而是它静默生效、错误只在特定路径或部署环境下暴露——上线前务必在真实子路径环境里点一遍所有链接。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










