使用 wget --mirror 转义查询字符串

15 linux wget mirroring

我正在使用wget --mirror --html-extension --convert-links镜像站点,但最终我得到了许多格式为post.php?id=#.html. 当我尝试在浏览器中查看这些内容时,它失败了,因为浏览器在加载文件时会忽略查询字符串。有没有办法?用其他东西替换文件名中的字符?


--restrict-file-names=windows正确工作的答案。结合标志--convert-links--adjust-extension/ -E(以前称为--html-extension,它也可以工作但已弃用),它会生成一个按预期运行的镜像。

wget  --mirror --adjust-extension --convert-links --restrict-file-names=windows http://www.example
Run Code Online (Sandbox Code Playgroud)

pet*_*eth 16

查看--restrict-file-names选项。虽然并非完全针对此特定目的,但--restrict-file-names=windows可能会帮助您:

--restrict-file-names=modes

更改在生成本地文件名期间必须转义在远程 URL 中找到的字符。[...]

当给出 "windows" 时,Wget 对字符 \、|、/、:、?、"、*、<、> 以及 0--31 和 128--159 范围内的控制字符进行转义。除此之外, Windows 模式下的 Wget 使用 + 而不是 : 来分隔本地文件名中的主机和端口,并使用 @ 而不是 ? 将文件名的查询部分与其余部分分开。因此,将保存为 www 的 URL。 xemacs.org:4300/search.pl?input=blah 在 Unix 模式下将被保存为 www.xemacs.org+4300/search.pl@input=blah 在 Windows 模式下。