Come mettere un sito “in costruzione” via .htaccess

Come mettere un sito “in costruzione” via .htaccess

Durante la manutenzione di un sito, ad esempio per aggiornamenti consistenti e soprattutto nel caso in cui siano da definire redirect di vario tipo, può essere importante mettere il sito rapidamente “in manutenzione” in modo che nessuno possa visionare pagine parziali, obsolete o del tutto errate. Dopo aver spiegato come mettere WordPress in manutenzione, in questo caso mi concentro su una circostanza molto più generale.

Come fare (in breve)

Se già avete fatto altre volte questo procedimento, eccolo sintetizzato in poche parole.

Nel file .htaccess dovrete sostituire il contenuto attuale (nota: fatevi un backup prima, per quando ripristinerete tutto) con questo:

Pubblicità

<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.123
 RewriteCond %{REQUEST_URI} !/manutenzione.html$ [NC]
 RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
 RewriteRule .* /maintenance.html [R=302,L]
</IfModule>

Questo file effettuerà un redirect di tutte le richieste al sito alla pagina manutenzione.html, che a sua volta dovrà essere presente nella root (cioè nella stessa cartella del file principale .htaccess), e potrebbe essere così:

<!doctype html>
<title>Site Maintenance</title>
<style>
  body { text-align: center; padding: 150px; }
  h1 { font-size: 50px; }
  body { font: 20px Helvetica, sans-serif; color: #333; }
  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>

<article>
    <h1>Lavori in corso</h1>
    <div>
		<p> Il sito &egrave; in manutenzione - Torneremo prestissimo, pi&ugrave; forti, veloci ed efficenti che mai!</p>
		<p> A presto, </p>
        <p>&mdash; Mario Rossi, tuosito123.it</p>
    </div>
</article>

Notate che:

  1. abbiamo imposto un redirect 302, quindi soltanto per gli utenti e non per i motori (in modo da non perdere l’indicizzazione ed il posizionamento regressi, almeno per qualche tempo);
  2. il file è HTML semplice e statico, con CSS embedded per semplificare la gestione e per avere “tutto in uno”, per così dire;
  3. nel file .htaccess di manutenzione è possibile indicare un indirizzo IP da cui vedere il sito normalmente, mentre tutti gli altri non lo vedranno; questo IP potrebbe essere il vostro, ad esempio, in modo da permettervi di lavorare al sito mentre tutti gli altri visitatori vedranno “lavori in corso”; l’IP deve essere specificato come !^123\.456\.789\.123, quindi con i punti ordinari . sostituiti da \. e con !^ davanti.
LEGGI ANCHE:  Come aggiungere una favicon al proprio sito (anche WordPress)

Come fare (spiegazione lunga): i requisiti base

Vediamo le cose in modo più approfondito ed esteso, a questo punto. Mediante una semplice modifica al file .htaccess andremo a mettere offline qualsiasi sito basato su server Apache, con PHP MySQL o anche con altri linguaggi e servizi attivi – purchè siano attivi Apache 2.x ed il mod_rewrite.

Mi riferirò ad un sito PHP qualsiasi, che giri sotto server Apache a prescindere dal database usato (MySQL o altri). Quindi va bene per siti in PHP come WordPress, Joomla!, Magento, Prestashop, e CMS proprietari purchè siano con server Apache alla base.

Come mettere il sito in costruzione

Per agire in questa direzione, è semplice:

  1. andiamo nella root del sito, ed editiamo il file .htaccess via FTP; prima di modificarlo, meglio scaricarsi una copia di backup in modo da poter rimettere rapidamente a posto le cose dopo aver finito la manutenzione. Per sapere come effettuare le operazioni basilari su FileZilla, uno dei client FTP più diffusi, leggete il tutorial che ho scritto ieri.
  2. cancelliamo tutto quello che sia presente in questo file, ed inseriamo il contenuto riportato di seguito.

Per mettere qualsiasi sito in manutenzione, cioè per far apparire una pagina “in manutenzione” a qualsiasi visitatore (amministratori del sito inclusi), scriviamo nel file .htaccess:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/maintenance\.html$
RewriteRule ^(.*)$ http://www.indirizzosito.it/maintenance.html [R=307,L]

Questo, come suggerito dall’ottima guida di David Walsh che ho usato come fonte, permette di mettere in manutenzione il sito ovvero di redirezionare mediante redirect 307 (una redirezione temporanea, in pratica, che non verrà indicizzata dai motori di ricerca) tutto il traffico alla pagina maintenance.html, il quale deve essere un file HTML statico contenente il messaggio che vogliamo dare ai visitatori (ad esempio “Torneremo presto online“).

Impostazioni più avanzate

Per fare una cosa più raffinata, possiamo anche permettere ad un indirizzo IP (ad esempio il nostro, nell’esempio xxx.yyy.zzz.kkk, scopri qui come trovarlo) di visionare il sito come sempre, aggiungendo una direttiva esplicita. In questo modo xxx.yyy.zzz.kkk sarà “autorizzato” a visionare normalmente il traffico, ed è anche possibile aggiungere più di un IP “speciale” ripetendo la riga indicata più volte nel file .htaccess.

RewriteEngine On
RewriteBase /

RewriteCond %{REMOTE_ADDR} !^xxx\.yyy\.zzz\.kkk
RewriteCond %{REQUEST_URI} !^/maintenance\.html$
RewriteRule ^(.*)$ http://www.indirizzosito.it/maintenance.html [R=307,L]

Per far tornare tutto come prima, è sufficente cancellare maintenance.html e ripristinare il file originale .htaccess che avete (sperabilmente) salvato all’inizio come backup. Per far “vedere” le modifiche al vostro browser, è opportuno ogni volta svuotare la cache del DNS. Se sei un principiante, scopri tutto quello che c’è da sapere sul file .htaccess partendo da qui.

Photo by ell brown

Ti piace questo articolo?

6 voti

Su Trovalost.it puntiamo sulla qualità dei contenuti da quando siamo nati: la tua sincera valutazione può aiutarci a migliorare ogni giorno.

Come mettere un sito “in costruzione” via .htaccess

Votato 10 / 10, da 6 utenti