N31m4D


pagina de mantenimiento con mod_rewrite

Publicado en Apache por n31m4d en Miércoles 3 Octubre 2007

Un cliente necesitaba hacer cambios en su base de datos, y por eso me pidió que le arme algo para que todas las conexiones a todos los virtualhost de su servidor vayan a una pagina de mantenimiento. Tambien necesitaba que desde su maquina pueda seguir viendo los sitios, para poder probrar los cambios de la DB.

Mi solución fue de usar el mod_rewrite de Apache. Como todos sus VirtualHost estan en /var/www, agregue las lineas siguientes a la conf del Apache ( /etc/httpd/conf/httpd.conf en RedHat) :


Options +FollowSymlinks
ReWriteEngine On
RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteCond %{REMOTE_HOST} !^111\.222\.333\.444
RewriteRule $ http://www.dominio.com/maintenance.html [R=302,L]

El primer RewriteCond hace que los pedidos de la pagina maintenance.html no sean reescritos.
El segundo RewriteCond permite que la IP 111.222.333.444 (claro que esa IP no existe, pongase su propia IP) pueda seguir accediendo a los sitios.
El RewriteRule reescribe todos los pedidos como http://www.dominio.com/maintenance.html.