Wie kann ich eine Website in PHP erstellen und haben sie eine statische Version generieren?

StackOverflow https://stackoverflow.com/questions/66610

  •  09-06-2019
  •  | 
  •  

Frage

Für ein bestimmtes Projekt, das ich habe, ist kein Server-Side-Code erlaubt. Wie kann ich die Website in PHP erstellen (mit einschließt, Bedingungen, usw.) und dann haben, die in eine statische HTML-Stelle umgewandelt, die ich an den Client geben kann?

Update: Vielen Dank an alle, die wget vorgeschlagen. Das ist, was ich verwenden. Ich festgelegt haben soll, dass ich auf einem PC war, so nahm ich die Windows-Version von hier: http: / /gnuwin32.sourceforge.net/packages/wget.htm .

War es hilfreich?

Lösung

Wenn Sie ein Linux-System zur Verfügung, um Sie verwenden wget :

wget -k -K  -E -r -l 10 -p -N -F -nH http://website.com/

Optionen

  • -k: konvertieren Links zu relativ
  • -K: Halten Sie ein Original-Versionen von Dateien, ohne dass die von wget gemacht Conversions
  • -E: umbenennen HTML-Dateien .html (wenn sie nicht bereits eine htm haben (l) Erweiterung)
  • -r: rekursive ... natürlich haben wir eine rekursive Kopie
  • machen wollen
  • -l 10: Die maximale Höhe der Rekursion. wenn Sie eine wirklich große Website haben müssen Sie möglicherweise eine höhere Zahl setzen, aber 10 Stufen sollen genügen.
  • -p: Download alle notwendigen Dateien für jede Seite (css, js, Bilder)
  • N:. Schalten Sie Zeitstempel
  • -F:. Wenn die Eingabe aus einer Datei gelesen wird, zwingen sie als HTML-Datei behandelt werden
  • -nH: standardmäßig wget setzen Dateien in einem Verzeichnis nach Standort des Host-Namen benannt. Dies wird deaktiviert Erstellung dieser Hostnamen Verzeichnisse und alles im aktuellen Verzeichnis.

Quelle: Jean -Pascal Houde Weblog

Andere Tipps

Ich habe dies in der Vergangenheit getan durch Hinzufügen:

ob_start();

Im oberen Rand der Seiten und dann in der Fußzeile:

$page_html = ob_get_contents();
ob_end_clean();
file_put_contents($path_where_to_save_files . $_SERVER['PHP_SELF'], $page_html);

Sie möchten vielleicht Erweiterungen konvertieren .php, bevor .html den HTML-Code in den Dateien zu backen. Wenn Sie mehrere Seiten mit Variablen eine ganz einfache Möglichkeit generieren müssen, ist der Dateiname mit MD5-Summen aller GET Variablen anhängen, müssen Sie einfach zu ihnen in der HTML zu ändern. So können Sie konvertieren:

somepage.php?var1=hello&var2=hullo

somepage_e7537aacdbba8ad3ff309b3de1da69e1.html

hässlich, aber funktioniert.

Manchmal kann man mit PHP Javascript erzeugt einige Funktionen zu emulieren, aber das kann nicht sehr leicht automatisiert werden.

Erstellen Sie Ihre Website, dann verwenden, um eine Spiegelung Tool wie wget oder LWP-mirror eine statische Kopie schnappen

Erstellen Sie die Website als normal, dann Spidern Software verwenden, um eine HTML-Kopie zu erzeugen.

HTTrack ist Software, die ich verwendet haben.

Eine Möglichkeit, dies zu tun, ist die Seite in PHP als normal zu schaffen, und haben tatsächlich ein Skript, um die Web-Seiten greifen (über HTTP - Sie können wget verwenden oder eine andere PHP-Skript schreiben, die gerade verwendet Datei () mit URLs) und speichern sie an die öffentliche Website Standorten, wenn Sie sind „fertig“. Dann können Sie einfach das Skript erneut ausgeführt, wenn Sie wieder die Seiten ändern sich entscheiden. Diese Methode ist sehr nützlich, wenn Sie einen sich langsam ändernden Datenbank und viel Verkehr haben, wie Sie alle SQL-Abfragen auf der Live-Site zu beseitigen.

Wenn Sie modx es eine eingebaute Funktion hat statische Dateien exportiert werden.

Wenn Sie eine Reihe von Seiten, mit allen Arten von Anfragevariablen und so weiter, wahrscheinlich einer der Spidern Werkzeuge der anderen commen erwähnt (wget, lwp-Spiegel, etc.) wäre die einfachste und robusteste Lösung.

Wenn jedoch die Anzahl der Seiten, die Sie benötigen niedrig ist, oder zumindest überschaubar , haben Sie ein paar Optionen bekommen, die von Drittanbieter-Tool nicht erforderlich (nicht, dass Sie sollten diskontieren sie nur, weil sie dritte).

  1. Sie können PHP auf der Kommandozeile verwenden, um Ausgabe in eine Datei direkt zu erhalten.

    php myFile.php > myFile.html

    Mit dieser Methode könnte schmerzhaft bekommen (auch wenn man sie alle in ein Shell-Skript setzen könnte), und es erlaubt Ihnen nicht Variablen in der gleichen Art und Weise zu passieren (zB: php myFile.php?abc=1 wird nicht funktionieren)

    .
  2. Sie könnten eine andere PHP-Datei als „build“ Skript verwenden, die eine Liste aller URLs enthält, die Sie wollen, und dann greift sie über file_get_contents() oder file() und schreibt sie in eine lokale Datei. Mit dieser Methode können Sie es auch bekommen zu überprüfen, ob die Datei geändert hat (md5_file() sollte für diese Arbeit), so dass Sie wissen, was Ihre Kunden zu geben, sollten sie nur Updates wollen.

  3. Im Anschluss an # 2, bevor Sie die Ausgabe schreiben Datei, Scannen es für lokale Urls und dann diejenigen, in der Liste der Dateien hinzufügen, zum Download bereit. Während Sie dort sind, diese URLs zu verknüpfen ändern, was Sie schließlich Ihre Ausgabe nennen würden, so dass Sie eine funktionierende Bahn am Ende haben. Anmerkung zur Vorsicht hier -. Wenn diese gut klingen, werden Sie wahrscheinlich eines der Werkzeuge verwenden könnte, die bereits existieren und dies für Sie tun

Als Alternative wget Sie (Win | Web) nutzen könnten HTTrack ( Webseite ) die statische Seite zu packen . HTTrack sogar Links zu Dateien und Dokumente korrigiert die statische Ausgabe entsprechen.

Ich mache es auf meine eigene Website für bestimmte Seiten, die nicht zu ändern sind garantiert - ich einfach ein Shell-Skript ausführen, die gekocht werden (Warnung: bash Pseudo-Code):

find site_folder -name \*.static.php -print -exec Staticize {} \;

mit Staticize Wesen:

# This replaces .static.php with .html
TARGET_NAME="`dirname "$1"`/"`basename "$1" .static.php`".html
php "$1" > "$TARGET_NAME"

wget ist wahrscheinlich die vollständigste Methode. Wenn Sie nicht, dass der Zugang haben, und Sie haben eine Vorlage basiert Layout, können Sie prüfen, Savant mit 3. Ich empfehle Savant 3 stark gegenüber anderen Template-Systeme wie Smarty.

Savant ist sehr leicht und nutzt PHP als Template-Sprache, nicht einige proprietäre Subsprache. Der Befehl, den Sie sehen wollen würde, ist zu holen (), die Ihre Vorlage „übersetzen“ und legen Sie sie in eine Variable, die Sie ausgeben können.

http://www.phpsavant.com/

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