Sono tanti i motivi per cui si puรฒ avere l’esigenza di mettere un sito in manutenzione: restyling grafico, aggiornamento del CMS utilizzato, messa in sicurezza dei contenuti da vulnerabilitร rilevate, migrazione tra piattaforme e molto altro; qualunque sia il motivo per il quale lo si fa, in questo post vedremo come questa procedura possa essere molto semplice se operata attraverso un file .htaccess.
Anche gli utenti di CMS come WordPress potranno beneficiare di questa tecnica in quanto molto piรน semplice delle procedure previste da molti degli appositi plugin per la messa off-line di WordPress.
Indice
Creare una pagina con l’avviso
Apriamo il nostro editor HTML preferito e creiamo la nostra pagina web di avviso di manutenzione. In pratica si tratterร di crere la pagina che verrร mostrata agli utenti che cercheranno di accedere alle pagine del sito web.
In questa pagina dobbiamo comunicare agli utenti che il sito รจ momentaneamente off-line per manutenzione.
Un esempio di pagina (estremamente semplice) che potete copiare e personalizzare a piacimento:
<!doctype html>
<html>
<head>
<title>Sito in manutenzione</title>
<style>
body { padding: 150px; font: 20px Helvetica, sans-serif; color: #333; }
h1 { font-size: 50px; }
article { display: block; text-align: left; width: 650px; margin: 0 auto; }
a { color: #dc8100; text-decoration: none; }
a:hover { color: #333; text-decoration: none; }
</style>
</head>
<body>
<article>
<h1>Stiamo aggiornando il sito web!</h1>
<div>
<p>Stiamo lavorando all'aggiornamento del nostro sito, pertanto non รจ possibile accedere ai contenuti ed ai servizi. Vi invitiamo a tornare a trovarci.</p>
<p>Per problemi o richieste urgenti potete <a href="mailto:[email protected]">scriverci una mail</a>.</p>
<p>Ci scusiamo per il disagio.</p>
</div>
</article>
</body>
</html>
Copiate il codice HTML, salvate il file come “sito-in-manutenzione.html” e caricate il file nella root del vostro spazio web (dove cioรจ si trova il file index del nostro sito).
Mettere un sito off-line con .htaccess
Vediamo ora il contenuto da aggiungere al nostro file .htaccess (se non ne abbiamo uno basterร crearlo ella root del nostro spazio web).
RewriteEngine On
RewriteCond %{REMOTE_HOST} !123\.123\.123\.123
RewriteCond %{REQUEST_URI} !sito-in-manutenzione\.html
RewriteRule (.*) sito-in-manutenzione.html [R=307,L]
In pratica ogni richiesta di una pagina del sito comporterร un redirect provvisorio (lo stato 307 corrisponde a “Temporary Redirect”) sulla pagina di avviso di manutenzione.
Indicare il proprio indirizzo IP
Se avete un IP statico dovete modificare questa riga con l’IP Address della vostra connessione alla Rete:
RewriteCond %{REMOTE_HOST} !123\.123\.123\.123
Cosรฌ facendo, attraverso la vostra postazione, riuscirete ad accedere al sito e potrete svolgere le operazioni di manutenzione (in pratica le regole aggiunte al file .htaccess non verranno applicate alla vostra connessione).
Se, viceversa, non avete un IP statico potete rimuovere questa linea di coidice. Ovviamente il sistema vi considererร al pari degli altri fruitori del sito e vi redirezionerร alla pagina con l’avviso. In tal caso potreste effettuare le modifiche in locale ed effettuare l’upload una volta ultimate.
Consentire l’accesso ad alcuni file
E’ possibile, durante la manutenzione del sito, consentire agli utenti di accedere a taluni file. Per farlo sarร sufficiente modificare il file .htaccess visto sopa in questo modo:
RewriteEngine On
RewriteCond %{REMOTE_HOST} !123\.123\.123\.123
RewriteCond %{REQUEST_URI} !sito-in-manutenzione\.html
RewriteCond %{REQUEST_URI} !(\.gif|\.jpeg|\.jpg|\.png|\.bmp|\.mp3|\.mp4|\.pdf)$
RewriteRule (.*) sito-in-manutenzione.html [R=307,L]
In pratica abbiamo aggiunto una nuova condizione:
RewriteCond %{REQUEST_URI} !(\.gif|\.jpeg|\.jpg|\.png|\.bmp|\.mp3|\.mp4|\.pdf)$
Grazie a questa condizione (che potete modificare a piacimento) abbiamo escluso certi tipi di file dal redirect verso la pagina di manutenzione. Quindi se un utente volesse accedere, ad esempio, ad un file PDF riuscirebbe a farlo nonostante il sito sia in manutenzione.
Utilizzo con WordPress
Come detto all’inizio di questo articolo, la metodica in oggetto puรฒ essere utilizzata anche con WordPress. Per farlo non bisognerร fare nulla di diverso rispetto a quanto giร descritto. Unica attenzione sarร nel copiare le istruzioni nel file .htaccess aggiungendole all’inizio del file, cioรจ prima delle regole di WordPress:
RewriteEngine On
RewriteCond %{REMOTE_HOST} !123\.123\.123\.123
RewriteCond %{REQUEST_URI} !sito-in-manutenzione\.html
RewriteRule (.*) sito-in-manutenzione.html [R=307,L]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
In questo modo le regole relative alla manutenzione avranno la precedenza su quelle di default di WordPress.