Restringir acceso a una web con usuario y dirección IP usando .htaccess

Septiembre 4, 2008

Esta es una pequeña nota de un problema con el que me he topado el dia de hoy y antes de ponerme a duplicar páginas o a inventarme algunas lineas de código en PHP para restringir el acceso decidí investigar un poco como configurar el .htaccess para poder restringir el acceso a un directorio web y me encontre con una solucion fácil y sencilla.

La situación era esta. Necesitaba restringir el acceso a un directorio web de manera que si alguien accede a la URL desde la IP de la oficina le permita el acceso transparente, y si el acceso se realiza desde cualquiera de las IP no autorizada que solicite un usuario y una contraseña para poder acceder al contenido. Para poder lograr esta configuración el archivo .htaccess debe de estar alojado en la raíz del directorio que queremos (en este enlace encontraras más información sobre como habilitar el .htaccess)

El archivo .htacces queda de la siguiente forma:


AuthUserFile /var/www/website/subdir/.htpasswd
AuthName "Protected Site"
AuthType Basic
Require user usuario1 usuario2
Order allow,deny
Allow from xx.xx.xx.xx
Satisfy any

El truco esta en la instrucción “Satisfy any” que basicamente lo que hace es permitir el acceso al subdirectorio si se cumple al menos una de las condiciones que exigimos en el archivo .htaccess. Yo personalmente no lo conocía pero navegando un poco encontre la solución y la dejo aquí por si a alguien le hace falta o para futuras referencias propias, que siempre se me olvida como hacer este tipo de cosas.

(Howto restrict access to a website by IP and username using .htaccess)