Home>Guide>Mettere il sito in maintenance mode con .htaccess

Mettere il sito in maintenance mode con .htaccess


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!

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.



Ti è piaciuto questo articolo? Regalami un click per ripagarmi dello sforzo



Code4Life ti è stato utile? Sostienici con una donazione!

Dona con PayPal

Hai trovato interessante l’articolo? Allora ti consiglio di leggere:

Come creare un sistema di votazione con CSS

Come creare un sistema di votazione con CSS


Impariamo ad implementare un sistema di voto, utile per blog ed e-commerce, utilizzando solo il CSS. Il risultato è tanto semplice quanto sbalorditivo!

A cosa servono gli attributi noopener e noreferrer?

A cosa servono gli attributi noopener e noreferrer?


Facciamo chiarezza sull’importanza dell’attributo rel="noopener noreferrer", utile per difendersi da una vulnerabilità da sempre trascurata ed utilizzata dai malintenzionati.

Oppure cerca tra gli articoli correlati


E tu cosa ne pensi? Condividi la tua opinione e discutiamone insieme
La tua email non sarà resa pubblico o utilizzata per inviarti spam, te lo prometto

Iscrivimi alla newsletter per ricevere news ed aggiornamenti
Utilizziamo piattaforme di terze parti per l’invio di newsletter. (Informativa sulla privacy)
Tienimi aggiornato su questo articolo
Ricevi una email di notifica quando qualcuno scriverà un commento a questo articolo. (Informativa sulla privacy)
Ricorda i miei dati per la prossima volta che scriverò un commento
Il tuo nome e la tua email verranno salvati in un cookie in questo browser. (Informativa sulla privacy)