Saltar la navegación

Directiva <Directory>

Directiva <Directory>

Sintaxis: <Directory ruta-a-directorio> ... </Directory>

Contexto: server config, virtual host

La directiva contenedora <Directory> se utiliza para configurar el comportamiento de un directorio y de todo el contenido que cuelga de él. Solo se pueden incluir directivas del contexto directory y no permite el anidamiento.

En ruta-a-directorio se especifica la ruta absoluta del directorio(s) que queremos configurar, pudiéndose utilizar los caracteres wildcard *, ? y [ ], y estos nunca incluyen el carácter de separación de directorios ( / ), algo muy importante a tener en cuenta, pues en el caso de usar /*/public_html, este patrón no casaría con /home/u1/public_html ni con /home/u2/public_html, para que casara con ambos, el patrón debería ser /home/*/public_html.

El contenido de ruta-a-directorio puede ir sin entrecomillar, solo es obligatorio poner las comillas cuando se especifican directorios cuyo nombre contienen espacios.

Si varias directivas <Directory> afectaran al mismo directorio, por ejemplo:

<Directory /home>
...
</Directory>

<Directory />
...
</Directory>

<Directory /home/u1>
...
</Directory>

el orden en el que se aplicarán las directivas sobre /home/u1, será empezando por la ruta más corta y  terminando por la ruta más larga, por lo que primero se aplica /, posteriormente /home y por último /home/u1, prevaleciendo siempre, cuando hay solapamiento, la última directiva ejecutada.

Es posible también hacer referencia a directorios a través de una expresión regular de tipo Perl, y para ello está la directiva contenedora <DirectoryMatch>.

Directiva <DirectoryMatch>

Sintaxis: <DirectoryMatch expresión-regular-de-directorios> ... </Directory>

Contexto: server config, virtual host

Esta directiva se aplica siempre después de que se hayan aplicado las directivas <Directory>, por lo tanto tiene menor prioridad en el orden de evaluación.

En el ejemplo siguiente configuraríamos el directorio public_html de los usuarios u1, u2, ..., u14, ..., del sistema:

<DirectoryMatch "^/home/u[0-9]+/public_html>
...
</DirectoryMatch>