导航重定向
通过 EP URL 映射控制顶层导航和新标签页,并指向内置插件页面。
能力:navigationRedirect。配置:internal.navigation_redirect,URL 模式到目标字符串的对象。不需要 JavaScript API。
配置映射
{
"internal": {
"navigation_redirect": {
"https://example.com/old*": "https://example.org/",
"https://example.com/blank*": ""
}
}
}合并到 EP,按需签名并重启。访问 https://example.com/old-page 应加载 https://example.org/。空目标表示 about:blank,不是网络取消错误。
模式匹配完整 URL,区分大小写。* 匹配零个或多个字符,? 匹配零个或一个字符。字面 ? 需要反斜杠转义,例如 JSON 映射键 "https://example.com/old\\?mode=*" 会按字面匹配查询分隔符。这不是正则或扩展匹配模式语法。
目标是固定 URL,不是替换模板,不会展开捕获组。非字符串项和无效目标会跳过。避免重叠映射及循环重定向,不要把 JSON 插入顺序当成优先级机制。
替换新标签页
安装包含 index.html、目录名为 my-plugin 的 Provision 插件,再配置:
{
"internal": {
"navigation_redirect": {
"chrome://newtab/": "provision-extension://my-plugin/index.html"
}
}
}使用带末尾斜杠的 chrome://newtab/,不是 chrome://new-tab-page/。Provision 目标使用已安装插件的目录名和实际存在的页面路径,不需要写死扩展 ID。
如果只有部分 EP 配置的实例需要自定义页面,这种方式不必在扩展清单里使用全局 chrome_url_overrides.newtab。
范围与边界
规则适用于受支持的 chrome:// 页面和顶层导航,不适用于 iframe、图片或 fetch 请求。HTTP 重定向后的目标不会再次按这些规则匹配。顶层表单提交匹配后,目标会作为新导航打开,不保留原 POST 请求体或 referrer。不要用它转发表单提交数据。请求级行为使用 DNR 或网络拦截。
重定向不是安全白名单,不保证目的地的其他 URL 或 API 路径都被阻止。地址栏或恢复的会话可能显示目标 URL,不保证继续显示原始 URL。
验证
分别测试直接导航、受控网页中的链接,以及新标签页。插件目标应在 chrome://extensions 检查目录名和页面文件。修改 EP 映射后重新签名并启动已有实例;只编辑 Provision EP 初始文件不会更新本地副本。