Redirect con htaccess tramite indirizzo IP

By | March 27, 2013

A volte può capitare di dover vietare l’accesso al proprio sito web, per manutenzione o per altri motivi, oppure abilitare solo alcuni indirizzi IP alla visione del proprio sito. In questo caso ci viene in aiuto il file .htaccess sfruttando il codice rewrite. Vediamo come utilizzarli…

Supponiamo di dover effettuare manutenzione al sito e ridirigere tutti i visitatori alla nostra  pagina di maintenance, abilitando soltanto il nostro indirizzo IP alla visione del sito per poter effettuare modifiche e miglioramenti. Per prima cosa creiamo all’interno della nostra “DocumentRoot” il file .htaccess:

# cd /srv/http
# touch .htaccess

modifichiamo il file appena creato con il nostro editor preferito:

# vim .htaccess

ed inseriamo le righe:

RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^192\.168\.0\.15
RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC]
RewriteRule .* /maintenance.html [R=301,L]

In questo caso tutte le richieste ricevute da un IP diverso dal 192.168.0.15 (!^192\.168\.0\.15) verranno redirette alla pagina “maintenance.html”. Per abilitare invece un intero range di IP ad esempio tutta la sotto rete 192.168.0.0/24, sostituiamo !^192\.168\.0\.15 con !^192\.168\.0\.*

Adesso supponiamo di dover ridirigere invece che ad una pagina Web ad un altro indirizzo Web, le righe da inserire saranno:

RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^192\.168\.0\.15
RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC]
RewriteRule .* http://www.archlinuxitalia.com [R=301,L]

Possiamo se vogliamo abilitare più IP aggiungendo semplicemente più direttive “RewriteCond %{REMOTE_ADDR}”. Esempio:

RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^192\.168\.0\.15
RewriteCond %{REMOTE_ADDR} !^94\.16\.150\.20
RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC]
RewriteRule .* /maintenance.html [R=301,L]

In questo caso solo l’IP 94.16.150.20 e tutta la sotto rete 192.168.0.0./24 (dal 192.168.0.1 al 192.168.0.254) possono visualizzare correttamente il sito senza Redirect.


  • Lantuin

    Assicurarsi che il MOD_Rewrite sia abilitato sotto la configurazione di Apache!