为了处理网站中的相对路径,我使用在每个页面中<base>
添加的标签。<head>
通过文档中类似相对路径加载的所有资源都已正确获取并显示,但是浏览器(我的试验中的 Chrome 和 Firefox)加载每个资产两次,一次使用真正的相对路径(给出 404 错误)和第二次<base>
在它之前附加了标签。
我在每个 html 文件中手动编写了这个脚本来实现这样的标签:
<head>
<script>
/* Where am I? */
here = window.location.href;
hereIndex = here.indexOf('prd-ita'); //find path to main folder
/* make substring from local root till prd-ita/ */
newPathname = here.substring(0, hereIndex+10); //+8 to consdier also prd-ita/
document.write('<base id="host" href="' + newPathname + '"/>');
</script>
...
</head>
例如,为了澄清,我的文件夹结构是例如:
- prd-ita
- 索引.html
- 文件夹1
- 文件1.html
- 图片.jpg
- 子文件夹2
- 文件2.html
无论加载哪个 html 文件,基本标记的生成 href 都是file:///D:/myWebsite/prd-ita/
,并且在 file2.html 中我加载了一个带有 path 的资源src="folder1/pic.jpg"
。
从检查工具中,我看到进行了两次加载尝试:
- 错误的路径(解释了真正的相对路径)
file:///D:/myWebsite/prd-ita/folder1/subfolder2/folder1/pic.jpg
- 正确的路径(附加基本标签)
file:///D:/myWebsite/prd-ita/folder1/pic.jpg
在您询问之前,我不会使用/
开始我的相对路径,因为它被解释为文件所在的驱动器号,我需要主 prd-ita 文件夹的完整路径。我只想使用客户端代码(例如没有 php)。