Mettere il sito in maintenance mode con .htaccess

Molto spesso, avrai avuto la necessità di lavorare su un sito già postato su un server remoto, ma dovendo apportare modifiche, come fare ad evitare che gli utenti vedano la fase di lavorazione o abbiamo a video risultati “poco gradevoli”?
- Leggi l'articolo, ti bastano solo 3 minuti, 35 secondi
Sei di fretta? Scarica il PDF e consultalo quando vuoi!
Sommario
1 La maintenance mode |
2 Attivazione della maintenance mode |
3 Whitelist con IP multipli |
4 Approfondimento per siti già posizionati in SERP |
5 Commenti |
La maintenance mode
La soluzione è inserire una pagina di manutenzione, che comunichi all’utente che il sito è entrato in una fase di revisione. La pagina in sé è davvero semplice, niente di più di una paginetta in HTML dove potrai sbizzarrirti con la tua creatività, che puoi chiamare maintenance.html e salvare nella root del server.
Diciamoci la verità, esistono davvero tantissimi plugins per WordPress che sono funzionali allo scopo. Se da un lato è inutile reinventare ogni volta la ruota, è però da considerare che lo scopo dell’articolo è di imparare nuovi trucchi e mettere in pratica nuove tecniche per accrescere le proprie competenze!
A questo punto, vediamo come “comunicare” al server le nostre intenzioni.
Attivazione della maintenance mode
Apri il file .htaccess presente nella root del tuo sito web (se non ne esiste uno, crealo) ed aggiungi le seguenti righe:
# Maintenance mode <IfModule mod_rewrite.c> RewriteEngine On # Indirizzi IP permessi (whitelist) RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.987 # Reindirizzamento alla pagina di manutenzione RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC] RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC] # Imposta la risposta del server a 503 RewriteRule .* /maintenance.html [R=503,L] </IfModule>
Il significato delle righe inserite è abbastanza semplice: stiamo comunicando al server di veicolare tutte le richieste, eccetto quelle provenienti dall’IP inserito in whitelist (naturalmente, qui va inserito il tuo IP), verso la pagina maintenance.html (precedentemente creata) e restituire forzatamente uno status di 503 (ovvero, “Servizio temporaneamente non disponibile”).
Ecco, da questo momento il tuo sito è in modalità di manutenzione e solo tu, attraverso l’IP inserito in whitelist, potrai vedere il sito in lavorazione, mentre tutti gli altri visualizzeranno la pagina di manutenzione.
Whitelist con IP multipli
Ovviamente, potresti avere la necessità di inserire più di un indirizzo IP in whitelist, magari per dare accesso ai tuoi collaboratori o per far visualizzare al cliente i progressi del tuo lavoro. Farlo è molto semplice: ti basta replicare la riga 6 ed inserire un nuovo indirizzo IP:
# Maintenance mode <IfModule mod_rewrite.c> RewriteEngine On # Indirizzi IP permessi (whitelist) RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.987 RewriteCond %{REMOTE_ADDR} !^987\.654\.321\.123 # Reindirizzamento alla pagina di manutenzione RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC] RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC] # Imposta la risposta del server a 503 RewriteRule .* /maintenance.html [R=503,L] </IfModule>
Approfondimento per siti già posizionati in SERP
Questo approfondimento è di vitale importanza per i siti che hanno già una storicità ed hanno già un posizionamento nei risultati di ricerca di Google (o di altri motori di ricerca), leggilo con attenzione!
C’è da considerare che uno spider di un motore di ricerca, di tanto in tanto, ripassa per un sito per controllare eventuali cambiamenti e/o modifiche. Nel caso questo passaggio avvenisse in fase di manutenzione, lo spider si ritroverebbe un messaggio di errore, dato appunto dallo status 503. Ovviamente, se la fase di manutenzione è lunga, potresti ricevere più visite da parte dello spider, il quale, di fronte a numerosi errori potrebbe determinare un calo nel posizionamento.
Non ci resta che arrenderci? No, assolutamente!
Ci basta calcolare una data stimata di termine dei lavori e comunicare allo spider di non ripassare fino a quella data, una sorta di ibernazione dello stato di posizionamento del sito che ti permetta di portare a termine le modifiche senza paura di perdere quanto di buono fatto finora.
Per farlo, ti basta inserire nel file .htaccess le seguenti righe:
# Comunica allo spider di ripassare dopo un certo tempo <IfModule mod_headers.c> # Il numero è espresso in secondi Header always set Retry-After "86400" </IfModule>
In questo caso d’esempio, comunichiamo allo spider che il nostro sito tornerà disponibile a pieno regime tra 86400 secondi, ovvero:
86400 secondi / 60 secondi al minuto = 1440 minuti
1440 minuti / 60 minuti all’ora = 24 ore
quindi esattamente dopo un giorno.