Los archivos .htaccess permiten modificar la configuración de un servicio instalado en un directorio. Suelen usarse en carpetas de usuarios que no tienen permisos totales, permitiendo qjue ejerzan cierto control sobre su parcela de contenidos del servicio web.
Para ello, se debe crear un archivo denominado ".htaccess" en el directorio que debe verse afectado. Las modificaciones afectarán a todos los subdirectorios y no requieren reiniciar el servidor.
Para que los archivos .htaccess sean tenidos en cuenta, se requiere la directiva "AllowOverride".
El contenido del archivo .htaccess (recordemos que afecta a la carpeta en la que se ubica y a sus subdirectorios) tiene el mismo efecto que si se añaden las líneas a la sección <Directory> del archivo /etc/apache2/apache2.conf.
Algunos de los usos más comunes de los archivos .htaccess son:
- Crear direcciones amigables
- Crear redirecciones
- Restringir el acceso a directorios del servidor
- Bloquear el acceso desde ciertas direcciones IP
- Manejar errores del servidor
- Evitar el hotlink o enlace a imágenes
- Cambiar un dominio con o sin www
Para ver la utilidad de un archivo .htaccess, crearemos una carpeta web de acceso privado, /var/www/html/privado, protegido por contraseña.
Seguiremos estos pasos:
1. Creamos el directorio privado y un archivo HTML contenido en ella
$ sudo mkdir /var/www/html/privado
$ cd /var/www/html/privado
$ cat index.html
<!doctype html>
<html>
<head>
<title>Web Privada</title>
</head>
<body>
<h1>Web privada</h1>
<p>Contenido de la web</p>
</body>
</html>
2. Habilitamos la directiva AllowOverride para la carpeta en la que instalaremos el servicio:
$ cat /etc/apache2/apache2.conf
(...)
<Directory /var/www/html/privado>
Options Indexes FollowSymLinks
AllowOverride FileInfo AuthConfig Limit Indexes
Require all granted
</Directory>
(...)
3. Creamos un archivo .htaccess en la carpeta afectada, /var/www/html/privado:
profesor@servidordns:/var/www/html/privado$ sudo vi .htaccess
profesor@servidordns:/var/www/html/privado$ cat .htaccess
AuthType Basic
AuthName "Este directorio está protegido"
AuthUserFile .htpasswd
Require valid-user
4. Creamos la contraseña encriptada para el usuario “profesor”:
profesor@servidordns:/var/www/html/privado$ htpasswd -n profesor
New password:
Re-type new password:
profesor:$apr1$aFQLRZk5$o2K/e3dILetlRL11FTmWX/
5. Generamos el archivo de contraseña, con la obtenida en el paso anterior, en /etc/apache2:
profesor@servidordns:/etc/apache2$ sudo vi .htpasswd
profesor@servidordns:/etc/apache2$ cat .htpasswd
profesor:$apr1$aFQLRZk5$o2K/e3dILetlRL11FTmWX/
6. Reiniciamos el servicio web:
$ sudo systemctl restart apache2
7. Al acceder a la URL afectada (http://www.miclase.local/privado) nos encontraremos con una petición de credenciales:

Y si ahora introducimos la contraseña del usuario autorizado (en este caso, “profesor”), accederemos a la web privada.
