当我尝试下载网站并尝试将某个域内的所有链接转换为相对链接时,我遇到了一个相当特殊的情况。我使用的 wget 命令是:
wget -q -r -nH -H -D{domain-name} -l 5 -p -E -k -e robots=off {url}
它可以很好地下载所有必需的页面和资源。然后它继续使用相对路径转换源页面中的所有链接。在此过程中,它甚至会执行一些路径编码,以便网站从下载文件夹顺利运行。
我面临的问题是:
假设我有一个指向原始 index.html 中的样式表的链接,如下所示 -
<link rel="stylesheet" href="/templates/source/booga booga/foobar.css" type="text/css" />
wget 从服务器下载正确的 css 并将链接编码到 index.html 中的 css 文件,如下所示 -
<link rel="stylesheet" href="/templates/source/booga booga/foobar.css" type="text/css" />
到目前为止一切都很好。所有浏览器都可以很好地找到样式表。
现在,样式表 foobar.css 包含这样的部分 -
.foo-bar-button {
font-size: 12px;
padding: 10px 20px 10px 30px;
background: url(/templates/professional/1/main/en/gfx/booga%20booga/foo-bar.png) left 55% no-repeat;
display: block;
width: 90px;
}
wget 下载背景图像,并继续对其路径进行转换和/或编码。就这样结束了——
.foo-bar-button {
font-size: 12px;
padding: 10px 20px 10px 30px;
background: url(/templates/professional/1/main/en/gfx/booga booga/foo-bar.png) left 55% no-repeat;
display: block;
width: 90px;
}
下载/转换后的 css 文件中背景图像的路径现在有一个未编码的空格。IE 可以很好地找到图像并且该站点可以正常工作。Chrome/Firefox/Opera 无法处理,按钮不可见。
我有多种情况,样式表中 url() 中的空格会导致样式不正确。
任何帮助,将不胜感激。