使用子域的根相对链接

Using Root-Relative Links With Subdomain

我继承了一个网站,之前的开发人员在该网站上对与网站根目录相关的所有 link 进行了编码,每个 link:

中都有一个前导反斜杠
<link href="/css/file.css" />
<script src="/js/file.js"></script>

当站点托管在服务器上时,这非常有用,因为 links 将等同于:

http://www.example.com/css/file.css
http://www.example.com/js/file.js

但是,当从 子文件夹 中调用这些 link 以进行本地测试时,我正试图让这些 link 正常工作。具体来说,我正在使用 WAMP,并将整个代码移动到位于 http://localhost:8080/site/.

的名为 site 的本地文件夹中

我不能使用 localhost 的根目录,因为 WAMP 在那里存储各种文件(包括会被覆盖的索引)。

正如 Whosebug 上的许多帖子所建议的那样,显而易见的解决方案是简单地使用文件夹相关的 links,例如:

<link href="css/file.css" />
<script src="js/file.js"></script>

但是,在各种不同的文件中确实有 数百个 的硬编码根相关 link,因此最好避免更改每个文件如果可能的话,其中之一。

为了避免必须编辑每个 link,我尝试设置 HTML <base> 标签并直接指定文件夹:

<base href="http://localhost:8080/site/">

然而,这似乎不起作用。

<base> 与相对根 link 不兼容吗?

有什么方法可以轻松地让所有文件引用 http://localhost:8080/site/,而不必手动编辑它们先前存在的每个根相对 link?还是我必须手动将每个更新为文件夹相关?

Is <base> incompatible with root-relative links?

不是,但是绝对路径仍然是绝对路径。它将通过删除 /site/.

相对于 http://localhost:8080/site/ 解析

如果您想使用绝对路径而不是将您的开发站点保存在子目录中,那么 configure your HTTP server to use Virtual Name Hosting

添加自定义主机名(在 LAN 的 DNS 服务器中或在开发系统的 hosts 文件中),例如 site.localhost,并在 DocumentRoot 中设置虚拟主机。

您是否尝试过在 IDE 中使用替换功能?您可以简单地将所有 ="/ 替换为 ="。它会为您节省很多工作和压力。