En otras ocasiones hemos comentado como proteger directorios mediante Apache, incluyendo en el .htaccess los comandos necesarios para ello. El problema viene cuando en vez de proteger una ruta fÃsica, queremos proteger un URL virtual, entendiendo URL virtual, aquella que no existe fÃsicamente y que mediante Apache redireccionamos a un script en concreto, por ejemplo:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteBase /
RewriteRule ^clientes index.php?redirect=clientes [QSA,L]
En este caso, si accedemos a http://servidor/cliente
, realmente no estaremos accediendo a una ruta fÃsica, pero puede ser que queramos que esta url no sea accesible para todo el mundo.
Para proteger una URL virtual debemos usar el comando Location, el cual debemos incluirlo en el httpd.conf o en un dominio virtual, y para protegerlo deberemos usar:
<Location /client>
AuthType Basic
AuthName "Acceso Protegido"
AuthUserFile [ruta .htpasswd]
AuthGroupFile /dev/null
order allow,deny
allow from all
deny from none
require valid-user
</Location>