wget -k 不会转换所有链接

fda*_*fda 6 wget mirror

我正在尝试将一个完整的网站镜像到另一个域。

我正在尝试使用

wget -mk http://example.com
Run Code Online (Sandbox Code Playgroud)

但是 -k 选项会保留一些原始 URL,而其他 URL 会被转换,例如:

<link rel="stylesheet" href="http://example.com/templates/css/style.css" type="text/css" />
<!--[if lt IE 8]>
  <link rel="stylesheet" href="/templates/css/ie.css" type="text/css" />
<![endif]-->
<!--[if lt IE 7]>
  <link rel="stylesheet" href="/templates/css/ie6.css" type="text/css" />
<![endif]-->
Run Code Online (Sandbox Code Playgroud)

或 img 标签:

<img src="http://example.com/templates/img/logo.jpg"
Run Code Online (Sandbox Code Playgroud)

虽然 a-tags 被正确转换。

这些来自 index.html,以及 wget 状态的输出,即 index.html 被转换

Converting example.com/index.html... 30-12
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况?

roa*_*ima 2

这来自 wget 联机帮助页,它可能解释了您所看到的内容:

-k --转换链接

下载完成后,转换文档中的链接,使其适合本地查看。这不仅会影响可见的超链接,还会影响文档中链接到外部内容的任何部分,例如嵌入图像、样式表链接、非 HTML 内容的超链接等。

每个链接都将通过以下两种方式之一进行更改:

  • Wget 下载的文件的链接将更改为引用它们作为相对链接指向的文件。

示例:如果下载的文件 /foo/doc.html 链接到 /bar/img.gif(也已下载),则 doc.html 中的链接将被修改为指向 ../bar/img.gif。这种转换对于目录的任意组合都可靠。

  • 尚未由 Wget 下载的文件的链接将更改为包括主机名和它们指向的位置的绝对路径。

示例:如果下载的文件 /foo/doc.html 链接到 /bar/img.gif (或 ../bar/img.gif),则 doc.html 中的链接将被修改为指向http://主机名/bar/img.gif

如果没有更多细节,很难更准确。