Question

Pour un projet particulier que j'ai, aucun code côté serveur n'est autorisé. Comment puis-je créer le site Web en php (avec includes, conditionals, etc.) puis le convertir en site HTML statique que je peux donner au client?

Mise à jour: Merci à tous ceux qui ont suggéré wget. C'est ce que j'ai utilisé. J'aurais dû préciser que j'étais sur un PC. J'ai donc saisi la version Windows à cet endroit: http: / /gnuwin32.sourceforge.net/packages/wget.htm .

Était-ce utile?

La solution

Si vous disposez d'un système Linux, utilisez wget :

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

Options

  • -k: convertir les liens en liens relatifs
  • -K: conserve les versions originales des fichiers sans les conversions effectuées par wget
  • -E: renommez les fichiers HTML en .html (s’ils ne possèdent pas encore l’extension htm (l))
  • -r: récursif & # 8230; bien sûr, nous voulons faire une copie récursive
  • -l 10: le niveau maximal de récursivité. si vous avez un très gros site web, vous devrez peut-être mettre un nombre plus élevé, mais 10 niveaux devraient suffire.
  • -p: téléchargez tous les fichiers nécessaires pour chaque page (css, js, images)
  • -N: activez l'horodatage.
  • -F: lorsque l'entrée est lue depuis un fichier, forcez-le à être traité comme un fichier HTML.
  • -nH: Par défaut, wget place les fichiers dans un répertoire nommé après le nom d’hôte du site. Ceci désactivera la création de ces répertoires de noms d’hôtes et mettra tout dans le répertoire actuel.

Source: Jean Blog de Pascal Houde

Autres conseils

Je l'ai fait par le passé en ajoutant:

ob_start();

En haut des pages puis en bas de page:

$page_html = ob_get_contents();
ob_end_clean();
file_put_contents($path_where_to_save_files . 

Je l'ai fait par le passé en ajoutant:

ob_start();

En haut des pages puis en bas de page:

somepage.php?var1=hello&var2=hullo

Vous voudrez peut-être convertir les extensions .php en .html avant de convertir le code HTML dans les fichiers. Si vous devez générer plusieurs pages avec des variables, une option très simple consiste à ajouter le nom de fichier avec md5sum à toutes les variables GET. Il vous suffit de les modifier également dans le code HTML. Pour que vous puissiez convertir:

somepage_e7537aacdbba8ad3ff309b3de1da69e1.html

à

<*>

laid mais fonctionne.

Vous pouvez parfois utiliser PHP pour générer du javascript afin d'émuler certaines fonctionnalités, mais cela ne peut pas être automatisé très facilement.

SERVER['PHP_SELF'], $page_html);

Vous voudrez peut-être convertir les extensions .php en .html avant de convertir le code HTML dans les fichiers. Si vous devez générer plusieurs pages avec des variables, une option très simple consiste à ajouter le nom de fichier avec md5sum à toutes les variables GET. Il vous suffit de les modifier également dans le code HTML. Pour que vous puissiez convertir:

<*>

à

<*>

laid mais fonctionne.

Vous pouvez parfois utiliser PHP pour générer du javascript afin d'émuler certaines fonctionnalités, mais cela ne peut pas être automatisé très facilement.

construisez votre site, puis utilisez un outil de mise en miroir, tel que wget ou lwp-mirror pour récupérer une copie statique

Créez le site normalement, puis utilisez un logiciel de spider pour générer une copie HTML.

HTTrack est un logiciel que j'ai utilisé auparavant.

Pour cela, créez le site en PHP normalement et demandez à un script de saisir les pages Web (via HTTP - vous pouvez utiliser wget ou écrire un autre script php utilisant uniquement file () avec des URL) et enregistrez-le. les sur les sites Web publics lorsque vous avez terminé. Ensuite, vous pouvez simplement réexécuter le script lorsque vous décidez de modifier à nouveau les pages. Cette méthode est très utile lorsque la base de données change lentement et que le trafic est important, car vous pouvez éliminer toutes les requêtes SQL sur le site actif.

Si vous utilisez modx, il a une fonction intégrée pour exporter des fichiers statiques.

Si vous avez un certain nombre de pages, avec toutes sortes de variables de requête et ainsi de suite, l'un des outils de spidering mentionné par les autres commentateurs (wget, lwp-mirror, etc.) serait la solution la plus simple et la plus robuste. / p>

Toutefois, si le nombre de pages à obtenir est faible ou au moins gérable , vous disposez de quelques options ne nécessitant aucun outil tiers. les escompter JUSt parce qu’ils sont des tiers).

  1. Vous pouvez utiliser php sur la ligne de commande pour le faire sortir directement dans un fichier.

    php monFichier.php > monFichier.html

    L'utilisation de cette méthode peut devenir pénible (bien que vous puissiez tout mettre dans un script shell) et ne vous permet pas de passer des variables de la même manière (par exemple: php myFile.php? abc = 1 ne fonctionnera pas).

  2. Vous pouvez utiliser un autre fichier PHP en tant que "construction". script qui contient une liste de toutes les URL souhaitées, puis les saisit via fichier_get_contents () ou fichier () et les écrit dans un fichier local. En utilisant cette méthode, vous pouvez également le faire vérifier si le fichier a changé ( md5_file () devrait fonctionner pour cela), afin que vous sachiez quoi donner à votre client, s'ils ne souhaitent que des mises à jour.

  3. En complément du n ° 2, avant d'écrire la sortie dans un fichier, recherchez-la à la recherche d'URL locales, puis ajoutez-les à votre liste de fichiers à télécharger. Pendant que vous y êtes, modifiez ces URL pour qu'elles renvoient à ce que vous nommerez éventuellement votre sortie afin de disposer d’un site Web opérationnel à la fin. Attention, si cela sonne bien, vous pourrez probablement utiliser l’un des outils existants et le faire pour vous.

Vous pouvez également utiliser HTTrack (Win | Web) HTTrack ( site Web ) pour récupérer la page statique. . HTTrack corrige même les liens vers les fichiers et les documents pour les faire correspondre à la sortie statique.

Je le fais sur mon propre site Web pour certaines pages dont la garantie de ne pas changer est garantie - je lance simplement un script shell qui pourrait être bouilli (avertissement: pseudocode bash):

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

avec Staticize être:

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

wget est probablement la méthode la plus complète. Si vous n'y avez pas accès et que vous avez une présentation basée sur des modèles, vous voudrez peut-être utiliser Savant 3. Je recommande fortement Savant 3 par rapport à d'autres systèmes de modèles tels que Smarty.

Savant est très léger et utilise PHP comme langage de template, pas comme sous-langage propriétaire. La commande à rechercher est fetch (), qui "compilera" votre modèle et placez-le dans une variable que vous pouvez générer.

http://www.phpsavant.com/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top