镜像网站并维护 URL 结构

Ste*_*nti 5 wget mirroring

目标

我想要镜像一个网站,这样我就可以在任何地方(localhost、S3 等)托管静态文件,并且 URL 将像原始文件一样显示给最终用户。

命令

这几乎完美地满足了我的需求(...但不完全是):

wget --mirror -nH -np -p -k -E -e robots=off http://mysite
Run Code Online (Sandbox Code Playgroud)

这是做什么的

  • --mirror:递归下载整个站点
  • -p:下载所有必需的页面必需品
  • -k:将 URL 转换为相对路径,以便我可以在任何地方托管它们

这不做什么

  • 防止重复下载
  • 保持(完全相同)相同的 URL 结构

问题

有些东西被下载多次,这会导致myfile.htmlmyfile.1.html。这也不错,只是当 wget 重写超链接时,它是用版本来编写的myfile.1.html,这会改变 URL,因此有 SEO 考虑(Google 会索引丑陋的 URL)。

-nc选项可以防止这种情况发生,但从 wget-v1.13 开始,我无法同时使用-k和。-nc详细信息请参见此处

帮助?!

我本来希望使用 wget,但我现在正在考虑使用另一个工具,例如 httrack,但我还没有任何经验。

任何关于如何实现这一目标的想法(使用 wget、httrack 或其他任何东西)将不胜感激!

Ste*_*nti 2

httrack让我明白了大部分内容,它所做的唯一 URL 修改就是使链接指向/folder/index.html而不是/folder/.

使用 或httrack似乎wget都不会产生完美的 URL 结构,因此我们最终编写了一个运行爬虫的小 bash 脚本,然后sed清理一些 URL(裁剪 fromindex.html链接、替换bla.1.htmlbla.html等)