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:mionome@miodominio.it">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.