Webサイトをダウンロードして、特定のドメイン内のすべてのリンクを相対リンクに変換しようとすると、かなり特殊なケースが発生します。私が使用するwgetコマンドは次のとおりです。
wget -q -r -nH -H -D{domain-name} -l 5 -p -E -k -e robots=off {url}
必要なすべてのページとリソースを問題なくダウンロードします。次に、ソースページ内のすべてのリンクを相対パスで変換します。このプロセス中に、Webサイトがダウンロードフォルダからスムーズに動作するように、パスエンコーディングも実行します。
私が直面している問題は次のとおりです。
元のindex.htmlにスタイルシートへのリンクがあるとしましょう-
<link rel="stylesheet" href="/templates/source/booga booga/foobar.css" type="text/css" />
wgetはサーバーから正しいcssをダウンロードし、次のようにindex.htmlのcssファイルへのリンクをエンコードします-
<link rel="stylesheet" href="/templates/source/booga booga/foobar.css" type="text/css" />
これまでのところすべて良い。すべてのブラウザは、スタイルシートに問題がないことを認識しています。
これで、スタイルシートfoobar.cssに次のようなセクションが含まれます-
.foo-bar-button {
font-size: 12px;
padding: 10px 20px 10px 30px;
background: url(/templates/professional/1/main/en/gfx/booga%20booga/foo-bar.png) left 55% no-repeat;
display: block;
width: 90px;
}
wgetは背景画像をダウンロードし、その画像へのパスの変換やエンコードに進みます。これで終わります-
.foo-bar-button {
font-size: 12px;
padding: 10px 20px 10px 30px;
background: url(/templates/professional/1/main/en/gfx/booga booga/foo-bar.png) left 55% no-repeat;
display: block;
width: 90px;
}
ダウンロード/変換されたcssファイルの背景画像へのパスに、エンコードされていない空白が含まれるようになりました。IEは画像を問題なく見つけることができ、サイトは機能します。Chrome / Firefox / Operaはそれを処理できず、ボタンは見えません。
スタイルシートのurl()の空白が、誤ったスタイルにつながる場合が複数あります。
どんな助けでもいただければ幸いです。