Frage

Ich habe GNU Wget 1.10.2 für Windows und Linux und die -k Option verhält sich anders auf diesen beiden.

  

-k, --convert-Links machen Links in heruntergeladenen HTML Punkt auf lokale Dateien.

Ein Fenster, die es erzeugt:

www.example.com/index.html
www.example.com/index.html@page=about
www.example.com/index.html@page=contact
www.example.com/index.html@page=sitemap

und auf Linux es produziert:

www.example.com/index.html
www.example.com/index.html?page=about
www.example.com/index.html?page=contact
www.example.com/index.html?page=sitemap

Dies ist problematisch, in Linux, weil, wenn ich den Spiegel durch Apache dienen wird es nicht zwischen den 4 generierten Seiten seit dem Teil nach dem Questionmark (? ) unterscheidet Charakter als den Query-String an den verwendet wird, Datei.

Alle Ideen, wie ich das steuern kann?

Dank

War es hilfreich?

Lösung

Sie können nicht ein Fragezeichen (?) In einem Dateinamen auf NTFS oder FAT32 verwenden. Aus diesem Grunde wget verwendet die at-Symbol (@) statt.

Unter Linux nur ein Schrägstrich (/) auf den meisten Dateisystemen verboten, so wget das Fragezeichen verwendet (da es Teil der URI).

Sie können entweder Verhalten erzwingen, indem --restrict-file-names=unix oder --restrict-file-names=windows verwendet wird.

Von der wget Dokumentation:

  

Wenn Modus auf „Unix“ eingestellt ist, Wget   entkommt das Zeichen ‚/‘ und die   Steuerzeichen in den Bereichen 0-31   und 128-159. Dies ist der Standard auf   Unix-artige OS'es.

     

Wenn Modus auf „Fenster“, Wget   entweicht die ‚\‘ Zeichen ‚|‘, ‚/‘,   ‚:‘ ‚?‘, ‚",‘,‚*‘,‚<‘,‚>‘, Und die   Steuerzeichen in den Bereichen 0-31   und 128-159. Zusätzlich zu dieser, Wget   in Windows verwendet Modus ‚+‘ statt   ‚:‘ Host und Port in lokalen trennen   Dateinamen und verwendet ‚@‘ statt   ‚?‘, Um den Abfrageteil trennen von   der Dateiname aus der Ruhe.   Daher ist eine URL, die gespeichert werden würde   wie   ‚www.xemacs.org:4300/search.pl?input=blah‘   in Unix würde Modus gespeichert werden   ‚www.xemacs.org+4300/search.pl@input=blah‘   in Windows-Modus. Dieser Modus ist die   Standard unter Windows.

Andere Tipps

  

Dies ist problematisch, in Linux, weil, wenn ich den Spiegel durch Apache dienen wird es nicht, da der Teil nach dem Question zwischen den 4 generierten Seiten unterscheiden (?) Zeichen in die Datei als das Query-String verwendet werden.

Um ein Fragezeichen in einem URL-Pfad Teil gehören, können Sie es entkommen:

www.example.com/index.html%3Fpage=about

- convert-Links sollten dies für Sie tun, würde ich denken -. Kann ein Fehler, wenn nicht

  

Dies ist problematisch, in Linux, weil, wenn ich den Spiegel dienen, durch   Apache es wird nicht zwischen den 4 generierten Seiten, da die Unterscheidung   Teil nach dem Questionmark (?) Zeichen wird als das Query-String verwendet   in die Datei.

Wenn es bereits zu spät in diesem sed Befehl mir geholfen:

find . -type f -name "*html*" -exec sed -i -r 's/(src|href)=(["\x27])(.*?)(\?)(.*?)\2/\1=\2\3%3F\5\2/g' {} + 

Es ersetzt? in href = oder src = Schlüssel% 3F. (\ X27 ist die einzige Zecke)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top