如何用wget镜像CMS网站并保留URL中的问号指纹?
解决Wget镜像网站时保留URL查询参数(指纹)的问题
问题原因
你当前的命令中,-E(强制添加文件扩展名)和--restrict-file-names=unix,nocontrol的组合导致了异常:
--restrict-file-names=unix模式会自动编码URL中的特殊字符(包括?)为%3F-E选项会给处理后的文件名强制添加扩展名,最终出现main.css%3Ffp=12345.css这类错误命名的链接
修正后的命令
使用以下命令可同时完成网站镜像、本地链接转换,并保留?后的指纹参数:
wget -m -nH -np -k --adjust-extension --restrict-file-names=unix,allow-question https://localhost/mysite
选项说明
- 替换
-E为--adjust-extension(缩写-e):仅当服务器返回的内容类型与文件名不匹配时,自动添加对应扩展名(比如给无.html后缀的HTML文件补加扩展名),避免强制给带查询参数的文件错误加后缀 - 修改
--restrict-file-names为unix,allow-question:在Unix兼容模式下允许文件名保留?字符,不会将其编码为%3F - 保留
-m(镜像模式)、-nH(不创建主机名目录)、-np(不爬取上级目录)、-k(转换链接为本地可访问)这些核心选项
验证效果
原链接<link href="/dist/css/main.css?fp=12345" type="text/css" rel="stylesheet">会被正确转换为本地可访问的形式,完整保留?和指纹参数:
<link href="dist/css/main.css?fp=12345" type="text/css" rel="stylesheet">
内容的提问来源于stack exchange,提问作者Kittyfish
相关产品推荐
相关产品推荐

