当我尝试下载网站并尝试将某个域内的所有链接转换为相关链接时,我遇到了一个相当特殊的情况。我使用的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()中的空格会导致样式不正确。
任何帮助都将不胜感激。
答案 0 :(得分:0)
find -name *.css -exec sed -e 's/\(url([^)]*\) /\1%20/g' -i \{\} \;
:)。如果网址最多可包含X个空格,则重复此次X次。
答案 1 :(得分:0)
我知道这是一个老问题,但我在寻找同样的问题时找到了它。
我提出了另一种解决方案:将网址放在引号之间:
`sed -re "s/url\((.+)\)(.+)/url\(\'\1\'\)\2/g" file.css -i;`
应该这样做。