我已经为Windows和Linux 获得了GNU Wget 1.10.2,并且-k选项在这两个上表现不同.
-k, - convert-links使下载的HTML中的链接指向本地文件.
在Windows上它产生:
www.example.com/index.html www.example.com/index.html@page=about www.example.com/index.html@page=contact www.example.com/index.html@page=sitemap
在Linux上它产生:
www.example.com/index.html www.example.com/index.html?page=about www.example.com/index.html?page=contact www.example.com/index.html?page=sitemap
这在linux中是有问题的,因为当我通过Apache服务镜像时,它不会区分4个生成的页面,因为在questionmark(?)字符之后的部分被用作文件的查询字符串.
关于如何控制这个的任何想法?
谢谢
您不能在NTFS或FAT32上的文件名中使用问号(?).这就是wget使用at符号(@)的原因.
在Linux中,大多数文件系统上只禁止使用斜杠(/),因此wget使用问号(因为它是URI的一部分).
您可以使用--restrict-file-names=unix
或强制执行任一行为--restrict-file-names=windows
.
从wget文档:
当mode设置为"unix"时,Wget将转义字符'/'和0-31和128-159范围内的控制字符.这是类Unix操作系统的默认设置.
当mode设置为"windows"时,Wget会转义字符'\','|','/',':','?',''','*','<','>'和0-31和128-159范围内的控制字符.除此之外,Windows模式下的Wget使用'+'代替':'来分隔本地文件名中的主机和端口,并使用'@'代替' ?将文件名的查询部分与其余部分分开.因此,
www.xemacs.org:4300/search.pl?input=blah
在Unix模式下保存为' ' 的URL将www.xemacs.org+4300/search.pl@input=blah
在Windows模式下保存为' '.此模式是Windows上的默认模式.