wget -kはすべてのリンクを変換しません

wget -kはすべてのリンクを変換しません

ウェブサイト全体を別のドメインにミラーリングしようとしています。

使ってみよう

wget -mk http://example.com

ただし、-kオプションは一部の元の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]-->

またはimgタグ:

<img src="http://example.com/templates/img/logo.jpg"

そしてaタグが正しく変換されました。

これはindex.htmlから取得され、wgetの出力はindex.htmlが変換されたことを示しています。

Converting example.com/index.html... 30-12

なぜこれが起こるのですか?

ベストアンサー1

これはおそらくあなたが見ている内容を説明するwgetマンページから得られたものです。

-k --リンク変換

ダウンロードが完了したら、ドキュメントのリンクをローカルビューに合わせて変換します。これは、表示されるハイパーリンクだけでなく、埋め込み画像、スタイルシートリンク、HTML以外のコンテンツへのハイパーリンクなど、外部コンテンツにリンクされている文書のすべての部分にも影響します。

各リンクは、次の2つの方法のいずれかに変更されます。

  • ファイルリンク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

詳細がなければ、より正確には困難です。

おすすめ記事