从HTML <BASE> 重定向中排除href

3
我正在处理一个现有应用程序,它本质上是一个非常大的.js文件,位于一个薄的HTML页面中。该脚本通过相对URI引用assets/目录中的大量文件。
我想在许多测试服务器上运行该应用程序,而不必A)将成千上万的资产文件复制到每个测试服务器,或B)重写JS中的每个资产引用以使用绝对URL。
我想到的解决方案是仅将.js和.html文件复制到测试服务器,并使用HTML <BASE>标记将资产重定向到生产服务器。
<!DOCTYPE HTML>
<HTML><HEAD><TITLE>MyApp</TITLE>
<BASE href="https://www.example.com/production-app.html" />
</HEAD>
<BODY>
<SCRIPT src="./app.js"></SCRIPT>
</BODY></HTML>

我现在唯一的问题是,<BASE>标签也将<SCRIPT>标签重定向到生产环境的app.js副本,而不是我的测试副本。 有没有一种方法可以从<BASE>中排除这个引用,并强制它查找与html文件相同的目录? 我通过在脚本标记中使用测试服务器的绝对URL找到了一个解决方法,但这需要在每个测试服务器上使用单独的HTML副本,似乎有些笨拙。

你可以做的另一件事是...将生产环境中的assets/目录挂载到测试机器上;如果无法挂载到想要的位置,则创建符号链接。但是,会将所有这些资产作为我的项目的一部分,并将其部署到测试和生产服务器上。从头开始部署是良好源代码控制(和构建自动化)的一个_特性_。 - Stephen P
1个回答

3

您不能排除链接,因为这是base标签的预期行为,实际上您需要指定一个完整的绝对URL来覆盖基本href。


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