Creazione di una copia statica di un sito Web dinamico
Al lavoro abbiamo diversi siti Web che sviluppiamo con wordpress, ma ogni anno creiamo una nuova versione e vogliamo conservare un archivio della vecchia versione.
Dal momento che ci vuole molta memoria per mantenere un’istanza Zope per questi vecchi siti Web che probabilmente non avranno più bisogno di essere modificati, ha senso fare una copia statica del sito web. Elimina inoltre il lavoro necessario per aggiornare l’istanza quando vengono rilasciate le patch di sicurezza (ed elimina i rischi per la sicurezza, in caso di versioni precedenti che non sono più mantenute).
Ci sono alcuni strumenti che possono aiutare in questo caso; Ho scelto di usare wget, che è disponibile nella maggior parte delle distribuzioni Linux per impostazione predefinita.
La riga di comando, da inserire
wget -k -K -E -r -l 10 -p -N -F --restrict-file-names=windows -nH http://website.com/
Elenco Comandi Spiegati
-k: converti i collegamenti in relativo
-K: mantieni una versione originale dei file senza le conversioni fatte da wget
-E: rinomina i file html in .html (se non hanno già un’estensione htm (l))
-r: ricorsiva … ovviamente vogliamo fare una copia ricorsiva
-l 10: il massimo livello di ricorsione. se hai un sito molto grande potresti aver bisogno di mettere un numero più alto, ma 10 livelli dovrebbero essere sufficienti.
-p: scarica tutti i file necessari per ogni pagina (css, js, images)
-N: Attiva il time-stamping.
-F: Quando l’input viene letto da un file, forzarlo per essere trattato come un file HTML.
-nH: per impostazione predefinita, wget inserisce i file in una directory denominata dopo il nome host del sito. Questo disabiliterà la creazione di quelle directory hostname e metterà tutto nella directory corrente.
-Restrict-file-names = windows: può essere utile se si desidera copiare i file su un PC Windows.
Possibili problemi
- wget scarica l’homagepage, robots.txt poi si ferma!
Il tuo file robots.txt probabilmente nega l’accesso al tuo sito ai motori di ricerca. Sì, in modalità ricorsiva, wget rispetterà il file robots.txt, quindi dovrai rimuoverlo prima di fare la copia. Non dimenticare di rimetterlo nel sito statico se è quello che vuoi. - Fogli di stile: se si dispone delle importazioni di foglio di stile @import, wget non le vedrà e non le scaricherà. Potrebbe essere necessario cambiarle in <link rel = “stylesheet” … /> imports, che wget vedrà e scaricherà.
- Immagini di fogli di stile: wget non scaricherà le immagini di sfondo a cui si fa riferimento nei file CSS. Per la maggior parte dei siti web che non dovrebbero essere troppo lunghi per scaricare queste immagini manualmente.
- Assicurati di avere i file CSS e con “.css”! Apache non invierà il tipo mime corretto se l’estensione del file non è .css e Firefox non utilizzerà il foglio di stile.
(test.css? color = blue non funzionerà, cambialo in test.css? color = blue & ext = .css)
Lo stesso problema potrebbe verificarsi con altri tipi di file che necessitano di un set di tipi di mimo appropriato (file video, ad esempio ) - Problemi specifici di Lingua
- Per evitare di avere più file duplicati con il parametro set_language, puoi impostare un sottodominio per ogni lingua e forzare il set_language = nella regola di reindirizzamento di Apache.
- Raccomando inoltre di cambiare il collegamento della lingua in modo che punti alla pagina principale anziché alla pagina corrente.
- Hai diverse possibilità qui, ma semplicemente facendo un wget senza cambiare nulla, potresti finire con pagine in cui le lingue sono un po ‘fottute.
- Problema di tag <base>: se le pagine contengono un tag di base (che è vero per i siti wordpress), wget svuoterà il suo valore ma lascerà il tag di base lì ([base href = “” /]). Funziona in Firefox, ma confonderà IE, che non caricherà alcuna immagine, CSS o link. Per risolverlo, puoi rimuovere completamente il tag base con questo comando:
trovare | grep html $ | xargs perl -i -p -e 's / <base href = \ "\" \ /> // g'
Svantaggi
- La maggior parte dei nomi di file cambierà (male per SEO)
- Potrebbe richiedere un po ‘di lavoro manuale per avere una copia statica funzionante
Dopo esserti occupato di tutti i possibili problemi, dovresti avere un sito statico funzionante! Assicurati di controllare sia con IE sia con Firefox (almeno), perché alcuni problemi si verificano in un solo browser.
Quindi, è possibile arrestare il CMS e il server del contenuto statico utilizzando un server web standard.
Non dimenticare di mettere una bella pagina 404 che punta alla tua pagina principale, dal momento che probabilmente i tuoi URL sono cambiati e diversi visitatori riceveranno un errore 404 se provengono da motori di ricerca o segnalibri.