# Cómo configurar Apache para que lea archivos .htaccess

- Link: https://binariocero.com/linux/como-configurar-apache-para-que-lea-archivos-htaccess
- Published: 2026-01-29T11:25:36+01:00
- Author: Juan José Fernández Durán

![Loading](https://binariocero.com/wp-content/plugins/page-views-count/ajax-loader-
2x.gif)

Los archivos `.htaccess` son **ficheros de configuración a nivel de directorio**
que permiten definir reglas de seguridad, redirecciones, reescrituras de URL y otras
configuraciones específicas sin modificar los archivos principales del servidor.

Sin embargo, **Apache no los procesa por defecto**, por motivos de rendimiento y
seguridad. Para que `.htaccess` sea leído, se debe configurar explícitamente el 
servidor. Este artículo explica cómo habilitar `.htaccess` correctamente para cualquier
aplicación web.

## Pre-requisitos

 * Apache 2.4 o superior
 * Acceso root o privilegios sudo
 * Una aplicación web instalada (por ejemplo: `/var/www/miapp`)
 * PHP-FPM (opcional, si la aplicación usa PHP)

## Habilitar módulos necesarios en Apache

Para que `.htaccess` funcione, Apache necesita **mod_rewrite** y otras capacidades
de reescritura o redirección.

    ```wp-block-code
    sudo a2enmod rewrite
    sudo systemctl restart apache2
    ```

Otros módulos útiles pueden ser `setenvif` o `headers`.

## Configurar el VirtualHost

Edita el archivo de configuración de tu sitio. Por ejemplo:

    ```wp-block-code
    sudo nano /etc/apache2/sites-available/miapp.conf
    ```

Agrega o modifica el bloque `<Directory>` para tu ruta:

    ```wp-block-code
    <VirtualHost *:80>
        ServerName miapp.midominio.com
        DocumentRoot /var/www/miapp

        <Directory /var/www/miapp>
            AllowOverride All
            Require all granted
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/miapp_error.log
        CustomLog ${APACHE_LOG_DIR}/miapp_access.log combined
    </VirtualHost>
    ```

**Explicación:**

 * `AllowOverride All` → permite que Apache lea todos los archivos `.htaccess` dentro
   de ese directorio y subdirectorios.
 * `Require all granted` → permite el acceso desde el navegador.
 * `ErrorLog` y `CustomLog` → ayudan a depurar errores.

## Reiniciar Apache

Después de cualquier cambio de configuración:

    ```wp-block-code
    sudo systemctl reload apache2
    ```

O, si prefieres reiniciar completamente:

    ```wp-block-code
    sudo systemctl restart apache2
    ```

## Verificar que `.htaccess` funciona

Crea un `.htaccess` temporal de prueba:

    ```wp-block-code
    nano /var/www/miapp/.htaccess
    ```

Contenido mínimo:

    ```wp-block-code
    # Prueba de .htaccess
    Deny from all
    ```

Intenta acceder a la aplicación desde el navegador:

    ```wp-block-code
    http://tu-servidor/miapp/
    ```

 * Si **recibes 403 Forbidden** → `.htaccess` está activo
 * Si **se carga normalmente** → Apache todavía no lo está leyendo

Elimina el `.htaccess` de prueba después de la verificación.

## Consideraciones de seguridad

 * Asegúrate de que los directorios sensibles de la aplicación estén protegidos.
 * Evita usar `AllowOverride All` en todo el servidor; aplícalo solo a directorios
   que necesiten `.htaccess`.
 * Para entornos de producción, deshabilita listados de directorios con:

    ```wp-block-code
    Options -Indexes
    ```

## Buenas prácticas

 * Verifica que Apache cargue los módulos necesarios (`rewrite`, `setenvif`).
 * No exponer `.htaccess` directamente al navegador.
 * Revisa logs en caso de que reglas dentro del `.htaccess` fallen:

    ```wp-block-code
    tail -f /var/log/apache2/error.log
    ```

## Conclusión

Habilitar `.htaccess` correctamente permite a Apache:

 * Leer reglas de seguridad y redirecciones de la aplicación.
 * Asegurar directorios sensibles y datos confidenciales.
 * Mantener compatibilidad con aplicaciones que dependen de estas configuraciones.

La clave es: **`AllowOverride All` + `mod_rewrite` activo + directorio correctamente
apuntado**.
