我正在尝试镜像一个站点,但是链接的 css 具有以下 url:http://127.0.0.1:2368/assets/css/screen.css?v=c44dc08367
使用 wget 下载网站并使用文件名保存 css 文件screen.css?v=c44dc08367
我尝试使用--adjust-extension
标志,但是这会将文件保存为screen.css?v=c44dc08367.css
是否可以像screen.css
使用 wget 一样以正确的方式保存它?
我正在使用基于 darwin12.5.0 构建的 GNU Wget 1.14。
编辑:我无法指定文件名,因为我正在镜像整个网站,所以实际命令如下。css 链接位于页面内(由 wget 自动获取)
wget \
--recursive \ # follow links to download entire site
--page-requisites \ # grab everything: css / inlined images
--no-parent \ # don't go to parent level
--directory-prefix static \# download contents to static/ folder
--no-host-directories \ # don't create domain named folder
--adjust-extension \
http://127.0.0.1:2368/
答案1
不幸的是,除非您告诉 wget,否则它不会对您要下载的内容做出任何假设。它不关心您的文件是图像、文档、压缩文件还是其他。
文件将以 URL 结尾的任何内容保存 - 因此从最后一个斜杠到 URL 末尾的任何内容。在您的例子中,即 .css?v=c44dc08367。实际文件扩展名 (.css) 后面的部分包含在 URL 中,但它是一个 HTTP 查询参数。但是,对于 wget,它将确定输出文件名。
如果您想为 wget 指定输出文件名,请添加 -O(大写 O)选项:
wget http://127.0.0.1:2368/assets/css/screen.css?v=c44dc08367 -O screen.css
最后,还有 --content-disposition 选项,它可能会导致设置正确的文件名。但这完全取决于您下载的服务器是否发送了正确的标头信息。