使用与域相关的根相对链接

时间:2017-01-31 23:00:11

标签: html relative-path

我继承了一个网站,其中前一位开发人员编写了相对于网站根目录的所有链接,每个链接都有一个反斜杠:

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

这适用于在服务器上托管网站时,因为链接将等同于:

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

但是,当我从子文件夹中调用本地测试时,我试图让这些链接正常工作。具体来说,我正在使用WAMP,并已将整个代码移至site处名为http://localhost:8080/site/的本地文件夹。

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

显而易见的解决方案,就像StackOverflow上的许多帖子所示,只是简单地使用文件夹相关链接,例如:

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

但是,在各种不同的文件中,存在数百个硬编码的根相对链接,因此如果可能的话,必须避免改变它们中的每一个都是很好的。

为避免编辑每个链接,我们尝试设置HTML <base>代码并直接指定文件夹:

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

但是,这似乎不起作用。

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

有没有什么方法可以轻松地让所有文件引用http://localhost:8080/site/,而无需手动编辑每个预先存在的根相对链接?或者我是否必须手动更新每个文件夹相对文件夹?

2 个答案:

答案 0 :(得分:1)

  

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

不,但绝对路径仍然是绝对路径。它将通过删除http://localhost:8080/site/来解析相对于/site/

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

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

答案 1 :(得分:0)

您是否尝试过在IDE中使用替换功能?您只需将所有="/替换为="。这样可以节省您很多工作和压力。