Loading docs/manual/sections.xml.es 0 → 100644 +541 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="./style/manual.es.xsl"?> <!-- English Revision: 151405 --> <!-- Copyright 2004-2005 The Apache Software Foundation or it licensors, as applicable. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <manualpage metafile="sections.xml.meta"> <title>Secciones de configuración</title> <summary> <p> Las directivas presentes en los <a href="configuring.html">ficheros de configuración</a> pueden ser de aplicación para todo el servidor, o puede que su aplicación se limite solamente a determinados directorios, ficheros, hosts, o URLs. Este documento explica cómo usar las secciones de configuración y los ficheros <code>.htaccess</code> para modificar el ámbito de aplicación de las directivas de configuración.</p> </summary> <section id="types"><title>Tipos de secciones de configuración</title> <related> <modulelist> <module>core</module> <module>mod_proxy</module> </modulelist> <directivelist> <directive type="section" module="core">Directory</directive> <directive type="section" module="core">DirectoryMatch</directive> <directive type="section" module="core">Files</directive> <directive type="section" module="core">FilesMatch</directive> <directive type="section" module="core">IfDefine</directive> <directive type="section" module="core">IfModule</directive> <directive type="section" module="core">Location</directive> <directive type="section" module="core">LocationMatch</directive> <directive type="section" module="mod_proxy">Proxy</directive> <directive type="section" module="mod_proxy">ProxyMatch</directive> <directive type="section" module="core">VirtualHost</directive> </directivelist> </related> <p>Exiten dos tipos básicos de secciones de configuración. Por un lado, la mayoría de las secciones de configuración se evalúan para cada petición que se recibe y se aplican las directivas que se incluyen en las distintas secciones solamente a las peticiones que se adecúan a determinadas características. Por otro lado, las secciones de tipo <directive type="section" module="core">IfDefine</directive> e <directive type="section" module="core">IfModule</directive>, se evalúan solamente al inicio o reinicio del servidor. Si al iniciar el servidor las condiciones son las adecuadas, las directivas que incluyen estas secciones se aplicarán a todas las peticiones que se reciban. Es caso contrario, esas directivas que incluyen se ignoran completamente.</p> <p>Las secciones <directive type="section" module="core">IfDefine</directive> incluyen directivas que se aplicarán solamente si se pasa un determinado parámetro por línea de comandos al ejecutar <program>httpd</program>. Por ejemplo, con la siguiente configuración, todas las peticiones serán redireccionadas a otro sitio web solamente si el servidor se inició usando <code>httpd -DClosedForNow</code>:</p> <example> <IfDefine ClosedForNow><br /> Redirect / http://otherserver.example.com/<br /> </IfDefine> </example> <p>La sección <directive type="section" module="core">IfModule</directive> es muy parecida. La diferencia respecto a <directive type="section" module="core">IfDefine</directive> está en que incluye directivas que se aplicarán solamente si un determinado módulo en particular está disponible en el servidor. El módulo debe estar compilado estáticamente en el servidor, o si está compilado de forma dinámica ha de ponerse antes una línea <directive module="mod_so">LoadModule</directive> en el fichero de configuración. Esta directiva debe usarla solamente si necesita que su fichero de configuración funcione estén o no instalados determinados módulos. No debe usarla para incluir directivas que quiera que se apliquen siempre, porque puede suprimir mensajes de error que pueden ser de mucha utilidad para detectar la falta de algún módulo.</p> <p>En el siguiente ejemplo, la directiva <directive module="mod_mime_magic">MimeMagicFiles</directive> se aplicará solamente si el módulo <module>mod_mime_magic</module> está disponible.</p> <example> <IfModule mod_mime_magic.c><br /> MimeMagicFile conf/magic<br /> </IfModule> </example> <p>Tanto <directive type="section" module="core">IfDefine</directive> como <directive type="section" module="core">IfModule</directive> pueder usarse con condiones negativas anteponiendo al test el carácter "!". Estas secciones también pueden anidarse para establecer restricciones más complejas.</p> </section> <section id="file-and-web"><title>Sistemas de ficheros y espacio web</title> <p>Las secciones de configuración usadas con más frecuencia son las que cambian la configuración de áreas del sistema de ficheros o del espacio web. En primer lugar, es importante comprender la diferencia que existe entre estos dos conceptos. El sistema de ficheros es la visión de sus discos desde el punto de vista del sistema operativo. Por ejemplo, en una instalación estándar, Apache estará en <code>/usr/local/apache2</code> en un sistema Unix o en <code>"c:/Program Files/Apache Group/Apache2"</code> en un sistema Windows. (Tenga en cuenta que con Apache debe usar siempre barras /, incluso en Windows.) Por el contrario, el espacio web lo que presenta el servidor web y que visualiza el cliente. De manera que la ruta <code>/dir/</code> en el espacio web se corresponde con la ruta <code>/usr/local/apache2/htdocs/dir/</code> en el sistema de ficheros de una instalación estándar en Unix. El espacio web no tiene que tener correspondencia directa con el sistema de ficheros, porque las páginas web pueden generarse de forma dinámica a partir de bases de datos o partiendo de otras ubicaciones.</p> <section id="filesystem"><title>Secciones relacionadas con el sistema de ficheros</title> <p>Las secciones <directive type="section" module="core">Directory</directive> y <directive type="section" module="core">Files</directive>, junto con sus contrapartes que usan expresiones regulares, aplican sus directivas a áreas del sistema de ficheros. Las directivas incluidas en una sección <directive type="section" module="core">Directory</directive> se aplican al directorio del sistema de ficheros especificado y a sus subdirectorios. El mismo resultado puede obtenerse usando <a href="howto/htaccess.html">ficheros .htaccess</a>. Por ejemplo, en la siguiente configuración, se activarán los índices de directorio para el directorio <code>/var/web/dir1</code> y sus subdirectorios.</p> <example> <Directory /var/web/dir1><br /> Options +Indexes<br /> </Directory> </example> <p>Las directivas incluidas en una sección <directive type="section" module="core">Files</directive> se aplicarán a cualquier fichero cuyo nombre se especifique, sin tener en cuenta en que directorio se encuentra. Por ejemplo, las siguientes directivas de configuración, cuando se colocan en la sección principal del fichero de configuración, deniegan el acceso a cualquier fichero llamado <code>private.html</code> sin tener en cuenta de donde se encuentre.</p> <example> <Files private.html><br /> Order allow,deny<br /> Deny from all<br /> </Files> </example> <p>Para referirse a archivos que se encuentren en un determinado lugar del sistema de ficheros, se pueden combinar las secciones <directive type="section" module="core">Files</directive> y <directive type="section" module="core">Directory</directive>. Por ejemplo, la siguiente configuración denegará el acceso a <code>/var/web/dir1/private.html</code>, <code>/var/web/dir1/subdir2/private.html</code>, <code>/var/web/dir1/subdir3/private.html</code>, y cualquier otra aparición de <code>private.html</code> que se encuentre en <code>/var/web/dir1/</code> o cualquiera de sus subdirectorios.</p> <example> <Directory /var/web/dir1><br /> <Files private.html><br /> Order allow,deny<br /> Deny from all<br /> </Files><br /> </Directory> </example> </section> <section id="webspace"><title>Secciones relacionadas con el espacio web</title> <p>La sección <directive type="section" module="core">Location</directive> y su contraparte que usa expresiones regulares, cambian la configuración para el contenido del espacio web. Por ejemplo, la siguiente configuración evita que se acceda a cualquier URL que empiece por /private. En concreto, se aplicará a peticiones que vayan dirigidas a <code>http://yoursite.example.com/private</code>, <code>http://yoursite.example.com/private123</code>, y a <code>http://yoursite.example.com/private/dir/file.html</code> así como también a cualquier otra petición que comience por <code>/private</code>.</p> <example> <Location /private><br /> Order Allow,Deny<br /> Deny from all<br /> </Location> </example> <p>La sección <directive type="section" module="core">Location</directive> puede no tener nada que ver con el sistema de ficheros. Por ejemplo, el siguiente ejemplo muestra como asociar una determinada URL a un handler interno de Apache del módulo <module>mod_status</module>. No tiene por qué existir ningún fichero <code>server-status</code> en el sistema de ficheros.</p> <example> <Location /server-status><br /> SetHandler server-status<br /> </Location> </example> </section> <section id="wildcards"><title>Caracteres comodín y expresiones regulares</title> <p>Las secciones <directive type="section" module="core">Directory</directive>, <directive type="section" module="core">Files</directive>, y <directive type="section" module="core">Location</directive> pueden usar caracteres comodín del tipo <code>fnmatch</code> de la librería estándar de C. El carácter "*" equivale a cualquier secuencia de caracteres, "?" equivale a cualquier carácter individual, y "[<em>seq</em>]" equivale a cualquier carácter en <em>seq</em>. Ningún carácter comodín equivale a"/", que debe siempre especificarse explícitamente.</p> <p>Si necesita un sistema de equivalencias más flexible, cada sección tiene una contraparte que acepta <a href="glossary.html#regex">expresiones regulares</a> compatibles con Perl: <directive type="section" module="core">DirectoryMatch</directive>, <directive type="section" module="core">FilesMatch</directive>, y <directive type="section" module="core">LocationMatch</directive>. Consulte la sección sobre la fusión de secciones de configuración para ver la forma en que las secciones expresiones regulares cambian el modo en que se aplican las directivas.</p> <p>Abajo se muestra un ejemplo en el que una sección de configuración que usa caracteres comodín en lugar de una expresión regular modifica la configuración de todos los directorios de usuario:</p> <example> <Directory /home/*/public_html><br /> Options Indexes<br /> </Directory> </example> <p>Usando expresiones regulares, podemos denegar el acceso a muchos tipos ficheros de imágenes de una sola vez:</p> <example> <FilesMatch \.(?i:gif|jpe?g|png)$><br /> Order allow,deny<br /> Deny from all<br /> </FilesMatch> </example> </section> <section id="whichwhen"><title>Qué usar en cada momento</title> <p>Decidir cuando hay que usar secciones que se apliquen sobre el sistema de ficheros y cuando usar secciones que se apliquen sobre el espacio web es bastante fácil. Cuando se trata de directivas que se aplican a objetos que residen en el sistema de ficheros, siempre se deben usar <directive type="section" module="core">Directory</directive> o <directive type="section" module="core">Files</directive>. Cuando se trata de directivas que se aplican a objetos que no residen en el sistema de ficheros (por ejemplo una página web generada a partir de una base de datos), se usa <directive type="section" module="core">Location</directive>.</p> <p>Es importante no usar nunca <directive type="section" module="core">Location</directive> cuando se trata de restringir el acceso a objetos en el sistema de ficheros. Esto se debe a que varias URLs diferentes pueden corresponderse con una misma ubicación en el sistema de ficheros, haciendo que la restricción pueda ser evitada. Por ejemplo, considere la siguiente configuración:</p> <example> <Location /dir/><br /> Order allow,deny<br /> Deny from all<br /> </Location> </example> <p>La restricción funciona si se produce una petición a <code>http://yoursite.example.com/dir/</code>. Pero, ¿qué ocurriría si se trata de un sistema de ficheros que no distingue mayúsculas de minúsculas? Entonces, la restricción que ha establecido podría evitarse fácilmente haciendo una peticion a <code>http://yoursite.example.com/DIR/</code>. Una sección <directive type="section" module="core">Directory</directive> por el contrario, se aplicará a cualquier contenido servido desde esa ubicación, independientemente de cómo se llame. (Una excepción son los enlaces del sistema de ficheros. El mismo directorio puede ser colocado en más de una ubicación del sistema de ficheros usando enlaces simbólicos. La sección <directive type="section" module="core">Directory</directive> seguirá los enlaces simbólicos sin resetear la ruta de fichero (resetting the pathname). Por tanto, para conseguir el mayor nivel de seguridad, los enlaces simbólicos deben desactivarse con la directiva <directive module="core">Options</directive> correspondiente.)</p> <p>En el caso de que piense que nada de esto le afecta porque usa un sistema de ficheros que distingue mayúsculas de minúsculas, recuerde que hay muchas otras maneras de hacer corresponder múltiples direcciones del espacio web con una misma ubicación del sistema de ficheros. Por tanto, use las secciones de configuración que se aplican al sistema de ficheros siempre que sea posible. Hay, sin embargo, una excepción a esta regla. Poner restricciones de configuración en una sección <code><Location /></code> es completamente seguro porque estas secciones se aplicarán a todas las peticiones independientemente de la URL específica que se solicite.</p> </section> </section> <section id="virtualhost"><title>Hosts virtuales</title> <p>El contenedor <directive type="section" module="core">VirtualHost</directive> agrupa directivas que se aplicarán a hosts específicos. Esto es útil cuando se sirven varios hosts con una misma máquina y con una configuración diferente cada uno. Para más información, consulte la <a href="vhosts/">documentación sobre hosts virtuales</a>.</p> </section> <section id="proxy"><title>Proxy</title> <p>Las secciones <directive type="section" module="mod_proxy">Proxy</directive> y <directive type="section" module="mod_proxy">ProxyMatch</directive> aplican las directivas de configuración que engloban solo a los sitios accedidos a través del servidor proxy del módulo <module>mod_proxy</module> que tengan equivalencia con la URL especificada. Por ejemplo, la siguiente configuración evitará que se use el servidor proxy para acceder al sitio web <code>cnn.com</code>.</p> <example> <Proxy http://cnn.com/*><br /> Order allow,deny<br /> Deny from all<br /> </Proxy> </example> </section> <section id="whatwhere"><title>¿Qué directivas se pueden usar?</title> <p>Para ver que directivas son las que se pueden usar en cada sección de configuración, consulte el <a href="mod/directive-dict.html#Context">Context</a> de la directiva. Todas las directivas que está permitido usar en las secciones <directive type="section" module="core">Directory</directive> se pueden usar también en las secciones <directive type="section" module="core">DirectoryMatch</directive>, <directive type="section" module="core">Files</directive>, <directive type="section" module="core">FilesMatch</directive>, <directive type="section" module="core">Location</directive>, <directive type="section" module="core">LocationMatch</directive>, <directive type="section" module="mod_proxy">Proxy</directive>, y <directive type="section" module="mod_proxy">ProxyMatch</directive>. Sin embargo, hay algunas excepciones:</p> <ul> <li>La directiva <directive module="core">AllowOverride</directive> funciona en las secciones <directive type="section" module="core">Directory</directive>.</li> <li>Las directivas <directive module="core">Options</directive> <code>FollowSymLinks</code> y <code>SymLinksIfOwnerMatch</code> <directive module="core">Options</directive> funcionan solo en las secciones <directive type="section" module="core">Directory</directive> y en los ficheros <code>.htaccess</code>.</li> <li>La direcitva <directive module="core">Options</directive> no puede ser usada en secciones <directive type="section" module="core">Files</directive> y <directive type="section" module="core">FilesMatch</directive>.</li> </ul> </section> <section id="mergin"><title>¿Cómo se fusionan las distintas secciones?</title> <p>Las secciones de configuración se aplican en un determinado orden. Como este orden puede tener efectos significativos en como se interpretan las directivas de configuración, es importante entender cómo funciona este proceso.</p> <p>El orden de fusión es el siguiente:</p> <ol> <li> <directive type="section" module="core">Directory</directive> (excepto expresiones regulares) y <code>.htaccess</code> simultáneamente (si el uso de <code>.htaccess</code> está permitido, prevaleciendo sobre <directive type="section" module="core">Directory</directive>)</li> <li><directive type="section" module="core">DirectoryMatch</directive> (y <code><Directory ~></code>)</li> <li><directive type="section" module="core">Files</directive> y <directive type="section" module="core">FilesMatch</directive> simultáneamente</li> <li><directive type="section" module="core">Location</directive> y <directive type="section" module="core">LocationMatch</directive> simultáneamente</li> </ol> <p>Aparte de <directive type="section" module="core">Directory</directive>, cada grupo se procesa en el orden en que aparezca en los ficheros de configuración. <directive type="section" module="core">Directory</directive> (grupo 1 arriba) se procesa empezando por los componentes de la ruta al directorio más cortos. Por ejemplo, <code><Directory /var/web/dir></code> se procesará antes de <code><Directory /var/web/dir/subdir></code>. Si hay que aplicar varias secciones <directive type="section" module="core">Directory</directive> a un mismo directorio, se aplican en el orden en que aparezcan en el fichero de configuración. Las configuraciones incluidas mediante la directiva <directive module="core">Include</directive> se tratarán como si estuvieran dentro del fichero de configuración principal en lugar de la sección <directive module="core">Include</directive>.</p> <p>Las secciones incluidas dentro de secciones <directive type="section" module="core">VirtualHost</directive> se aplican <em>después de</em> las correspondientes secciones fuera de la definición del host virtual. Esto permite que la configuración especificada para los hosts virtuales pueda prevalecer sobre la configuración del servidor principal.</p> <p>Las secciones que aparecen después prevalecen sobre las que aparecen antes.</p> <note><title>Nota técnica.</title> Previamente a la fase de traducción de nombres (en la que se analizan los <code>Aliases</code> y <code>DocumentRoots</code> para calcular las correspondencias entre URLs y nombres de ficheros) se ejecuta una secuencia <code><Location></code>/<code><LocationMatch></code>. Los resultados de esta secuencia se desechan después de ejecutar la traducción. </note> <section id="merge-examples"><title>Algunos ejemplos</title> <p>Abajo se muestra un ejemplo para que se vea claramente cuál es el orden de fusión. Asumiendo que todas las secciones se aplican a la petición, las de este ejemplo se aplicarían en el orden A > B > C > D > E.</p> <example> <Location /><br /> E<br /> </Location><br /> <br /> <Files f.html><br /> D<br /> </Files><br /> <br /> <VirtualHost *><br /> <Directory /a/b><br /> B<br /> </Directory><br /> </VirtualHost><br /> <br /> <DirectoryMatch "^.*b$"><br /> C<br /> </DirectoryMatch><br /> <br /> <Directory /a/b><br /> A<br /> </Directory><br /> <br /> </example> <p>A continuación se muestra un ejemplo más concreto. Independientemente de las restricciones de acceso que se hayan establecido en las secciones <directive module="core" type="section">Directory</directive>, la sección <directive module="core" type="section">Location</directive> será evaluada al final y se permitirá acceso sin restricciones al servidor. En otras palabras, el orden de fusión es importante, de modo que ponga atención.</p> <example> <Location /><br /> Order deny,allow<br /> Allow from all<br /> </Location><br /> <br /> # Esta sección <Directory> no tendrá efecto<br /> <Directory /><br /> Order allow,deny<br /> Allow from all<br /> Deny from badguy.example.com<br /> </Directory> </example> </section> </section> </manualpage> Loading
docs/manual/sections.xml.es 0 → 100644 +541 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="./style/manual.es.xsl"?> <!-- English Revision: 151405 --> <!-- Copyright 2004-2005 The Apache Software Foundation or it licensors, as applicable. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <manualpage metafile="sections.xml.meta"> <title>Secciones de configuración</title> <summary> <p> Las directivas presentes en los <a href="configuring.html">ficheros de configuración</a> pueden ser de aplicación para todo el servidor, o puede que su aplicación se limite solamente a determinados directorios, ficheros, hosts, o URLs. Este documento explica cómo usar las secciones de configuración y los ficheros <code>.htaccess</code> para modificar el ámbito de aplicación de las directivas de configuración.</p> </summary> <section id="types"><title>Tipos de secciones de configuración</title> <related> <modulelist> <module>core</module> <module>mod_proxy</module> </modulelist> <directivelist> <directive type="section" module="core">Directory</directive> <directive type="section" module="core">DirectoryMatch</directive> <directive type="section" module="core">Files</directive> <directive type="section" module="core">FilesMatch</directive> <directive type="section" module="core">IfDefine</directive> <directive type="section" module="core">IfModule</directive> <directive type="section" module="core">Location</directive> <directive type="section" module="core">LocationMatch</directive> <directive type="section" module="mod_proxy">Proxy</directive> <directive type="section" module="mod_proxy">ProxyMatch</directive> <directive type="section" module="core">VirtualHost</directive> </directivelist> </related> <p>Exiten dos tipos básicos de secciones de configuración. Por un lado, la mayoría de las secciones de configuración se evalúan para cada petición que se recibe y se aplican las directivas que se incluyen en las distintas secciones solamente a las peticiones que se adecúan a determinadas características. Por otro lado, las secciones de tipo <directive type="section" module="core">IfDefine</directive> e <directive type="section" module="core">IfModule</directive>, se evalúan solamente al inicio o reinicio del servidor. Si al iniciar el servidor las condiciones son las adecuadas, las directivas que incluyen estas secciones se aplicarán a todas las peticiones que se reciban. Es caso contrario, esas directivas que incluyen se ignoran completamente.</p> <p>Las secciones <directive type="section" module="core">IfDefine</directive> incluyen directivas que se aplicarán solamente si se pasa un determinado parámetro por línea de comandos al ejecutar <program>httpd</program>. Por ejemplo, con la siguiente configuración, todas las peticiones serán redireccionadas a otro sitio web solamente si el servidor se inició usando <code>httpd -DClosedForNow</code>:</p> <example> <IfDefine ClosedForNow><br /> Redirect / http://otherserver.example.com/<br /> </IfDefine> </example> <p>La sección <directive type="section" module="core">IfModule</directive> es muy parecida. La diferencia respecto a <directive type="section" module="core">IfDefine</directive> está en que incluye directivas que se aplicarán solamente si un determinado módulo en particular está disponible en el servidor. El módulo debe estar compilado estáticamente en el servidor, o si está compilado de forma dinámica ha de ponerse antes una línea <directive module="mod_so">LoadModule</directive> en el fichero de configuración. Esta directiva debe usarla solamente si necesita que su fichero de configuración funcione estén o no instalados determinados módulos. No debe usarla para incluir directivas que quiera que se apliquen siempre, porque puede suprimir mensajes de error que pueden ser de mucha utilidad para detectar la falta de algún módulo.</p> <p>En el siguiente ejemplo, la directiva <directive module="mod_mime_magic">MimeMagicFiles</directive> se aplicará solamente si el módulo <module>mod_mime_magic</module> está disponible.</p> <example> <IfModule mod_mime_magic.c><br /> MimeMagicFile conf/magic<br /> </IfModule> </example> <p>Tanto <directive type="section" module="core">IfDefine</directive> como <directive type="section" module="core">IfModule</directive> pueder usarse con condiones negativas anteponiendo al test el carácter "!". Estas secciones también pueden anidarse para establecer restricciones más complejas.</p> </section> <section id="file-and-web"><title>Sistemas de ficheros y espacio web</title> <p>Las secciones de configuración usadas con más frecuencia son las que cambian la configuración de áreas del sistema de ficheros o del espacio web. En primer lugar, es importante comprender la diferencia que existe entre estos dos conceptos. El sistema de ficheros es la visión de sus discos desde el punto de vista del sistema operativo. Por ejemplo, en una instalación estándar, Apache estará en <code>/usr/local/apache2</code> en un sistema Unix o en <code>"c:/Program Files/Apache Group/Apache2"</code> en un sistema Windows. (Tenga en cuenta que con Apache debe usar siempre barras /, incluso en Windows.) Por el contrario, el espacio web lo que presenta el servidor web y que visualiza el cliente. De manera que la ruta <code>/dir/</code> en el espacio web se corresponde con la ruta <code>/usr/local/apache2/htdocs/dir/</code> en el sistema de ficheros de una instalación estándar en Unix. El espacio web no tiene que tener correspondencia directa con el sistema de ficheros, porque las páginas web pueden generarse de forma dinámica a partir de bases de datos o partiendo de otras ubicaciones.</p> <section id="filesystem"><title>Secciones relacionadas con el sistema de ficheros</title> <p>Las secciones <directive type="section" module="core">Directory</directive> y <directive type="section" module="core">Files</directive>, junto con sus contrapartes que usan expresiones regulares, aplican sus directivas a áreas del sistema de ficheros. Las directivas incluidas en una sección <directive type="section" module="core">Directory</directive> se aplican al directorio del sistema de ficheros especificado y a sus subdirectorios. El mismo resultado puede obtenerse usando <a href="howto/htaccess.html">ficheros .htaccess</a>. Por ejemplo, en la siguiente configuración, se activarán los índices de directorio para el directorio <code>/var/web/dir1</code> y sus subdirectorios.</p> <example> <Directory /var/web/dir1><br /> Options +Indexes<br /> </Directory> </example> <p>Las directivas incluidas en una sección <directive type="section" module="core">Files</directive> se aplicarán a cualquier fichero cuyo nombre se especifique, sin tener en cuenta en que directorio se encuentra. Por ejemplo, las siguientes directivas de configuración, cuando se colocan en la sección principal del fichero de configuración, deniegan el acceso a cualquier fichero llamado <code>private.html</code> sin tener en cuenta de donde se encuentre.</p> <example> <Files private.html><br /> Order allow,deny<br /> Deny from all<br /> </Files> </example> <p>Para referirse a archivos que se encuentren en un determinado lugar del sistema de ficheros, se pueden combinar las secciones <directive type="section" module="core">Files</directive> y <directive type="section" module="core">Directory</directive>. Por ejemplo, la siguiente configuración denegará el acceso a <code>/var/web/dir1/private.html</code>, <code>/var/web/dir1/subdir2/private.html</code>, <code>/var/web/dir1/subdir3/private.html</code>, y cualquier otra aparición de <code>private.html</code> que se encuentre en <code>/var/web/dir1/</code> o cualquiera de sus subdirectorios.</p> <example> <Directory /var/web/dir1><br /> <Files private.html><br /> Order allow,deny<br /> Deny from all<br /> </Files><br /> </Directory> </example> </section> <section id="webspace"><title>Secciones relacionadas con el espacio web</title> <p>La sección <directive type="section" module="core">Location</directive> y su contraparte que usa expresiones regulares, cambian la configuración para el contenido del espacio web. Por ejemplo, la siguiente configuración evita que se acceda a cualquier URL que empiece por /private. En concreto, se aplicará a peticiones que vayan dirigidas a <code>http://yoursite.example.com/private</code>, <code>http://yoursite.example.com/private123</code>, y a <code>http://yoursite.example.com/private/dir/file.html</code> así como también a cualquier otra petición que comience por <code>/private</code>.</p> <example> <Location /private><br /> Order Allow,Deny<br /> Deny from all<br /> </Location> </example> <p>La sección <directive type="section" module="core">Location</directive> puede no tener nada que ver con el sistema de ficheros. Por ejemplo, el siguiente ejemplo muestra como asociar una determinada URL a un handler interno de Apache del módulo <module>mod_status</module>. No tiene por qué existir ningún fichero <code>server-status</code> en el sistema de ficheros.</p> <example> <Location /server-status><br /> SetHandler server-status<br /> </Location> </example> </section> <section id="wildcards"><title>Caracteres comodín y expresiones regulares</title> <p>Las secciones <directive type="section" module="core">Directory</directive>, <directive type="section" module="core">Files</directive>, y <directive type="section" module="core">Location</directive> pueden usar caracteres comodín del tipo <code>fnmatch</code> de la librería estándar de C. El carácter "*" equivale a cualquier secuencia de caracteres, "?" equivale a cualquier carácter individual, y "[<em>seq</em>]" equivale a cualquier carácter en <em>seq</em>. Ningún carácter comodín equivale a"/", que debe siempre especificarse explícitamente.</p> <p>Si necesita un sistema de equivalencias más flexible, cada sección tiene una contraparte que acepta <a href="glossary.html#regex">expresiones regulares</a> compatibles con Perl: <directive type="section" module="core">DirectoryMatch</directive>, <directive type="section" module="core">FilesMatch</directive>, y <directive type="section" module="core">LocationMatch</directive>. Consulte la sección sobre la fusión de secciones de configuración para ver la forma en que las secciones expresiones regulares cambian el modo en que se aplican las directivas.</p> <p>Abajo se muestra un ejemplo en el que una sección de configuración que usa caracteres comodín en lugar de una expresión regular modifica la configuración de todos los directorios de usuario:</p> <example> <Directory /home/*/public_html><br /> Options Indexes<br /> </Directory> </example> <p>Usando expresiones regulares, podemos denegar el acceso a muchos tipos ficheros de imágenes de una sola vez:</p> <example> <FilesMatch \.(?i:gif|jpe?g|png)$><br /> Order allow,deny<br /> Deny from all<br /> </FilesMatch> </example> </section> <section id="whichwhen"><title>Qué usar en cada momento</title> <p>Decidir cuando hay que usar secciones que se apliquen sobre el sistema de ficheros y cuando usar secciones que se apliquen sobre el espacio web es bastante fácil. Cuando se trata de directivas que se aplican a objetos que residen en el sistema de ficheros, siempre se deben usar <directive type="section" module="core">Directory</directive> o <directive type="section" module="core">Files</directive>. Cuando se trata de directivas que se aplican a objetos que no residen en el sistema de ficheros (por ejemplo una página web generada a partir de una base de datos), se usa <directive type="section" module="core">Location</directive>.</p> <p>Es importante no usar nunca <directive type="section" module="core">Location</directive> cuando se trata de restringir el acceso a objetos en el sistema de ficheros. Esto se debe a que varias URLs diferentes pueden corresponderse con una misma ubicación en el sistema de ficheros, haciendo que la restricción pueda ser evitada. Por ejemplo, considere la siguiente configuración:</p> <example> <Location /dir/><br /> Order allow,deny<br /> Deny from all<br /> </Location> </example> <p>La restricción funciona si se produce una petición a <code>http://yoursite.example.com/dir/</code>. Pero, ¿qué ocurriría si se trata de un sistema de ficheros que no distingue mayúsculas de minúsculas? Entonces, la restricción que ha establecido podría evitarse fácilmente haciendo una peticion a <code>http://yoursite.example.com/DIR/</code>. Una sección <directive type="section" module="core">Directory</directive> por el contrario, se aplicará a cualquier contenido servido desde esa ubicación, independientemente de cómo se llame. (Una excepción son los enlaces del sistema de ficheros. El mismo directorio puede ser colocado en más de una ubicación del sistema de ficheros usando enlaces simbólicos. La sección <directive type="section" module="core">Directory</directive> seguirá los enlaces simbólicos sin resetear la ruta de fichero (resetting the pathname). Por tanto, para conseguir el mayor nivel de seguridad, los enlaces simbólicos deben desactivarse con la directiva <directive module="core">Options</directive> correspondiente.)</p> <p>En el caso de que piense que nada de esto le afecta porque usa un sistema de ficheros que distingue mayúsculas de minúsculas, recuerde que hay muchas otras maneras de hacer corresponder múltiples direcciones del espacio web con una misma ubicación del sistema de ficheros. Por tanto, use las secciones de configuración que se aplican al sistema de ficheros siempre que sea posible. Hay, sin embargo, una excepción a esta regla. Poner restricciones de configuración en una sección <code><Location /></code> es completamente seguro porque estas secciones se aplicarán a todas las peticiones independientemente de la URL específica que se solicite.</p> </section> </section> <section id="virtualhost"><title>Hosts virtuales</title> <p>El contenedor <directive type="section" module="core">VirtualHost</directive> agrupa directivas que se aplicarán a hosts específicos. Esto es útil cuando se sirven varios hosts con una misma máquina y con una configuración diferente cada uno. Para más información, consulte la <a href="vhosts/">documentación sobre hosts virtuales</a>.</p> </section> <section id="proxy"><title>Proxy</title> <p>Las secciones <directive type="section" module="mod_proxy">Proxy</directive> y <directive type="section" module="mod_proxy">ProxyMatch</directive> aplican las directivas de configuración que engloban solo a los sitios accedidos a través del servidor proxy del módulo <module>mod_proxy</module> que tengan equivalencia con la URL especificada. Por ejemplo, la siguiente configuración evitará que se use el servidor proxy para acceder al sitio web <code>cnn.com</code>.</p> <example> <Proxy http://cnn.com/*><br /> Order allow,deny<br /> Deny from all<br /> </Proxy> </example> </section> <section id="whatwhere"><title>¿Qué directivas se pueden usar?</title> <p>Para ver que directivas son las que se pueden usar en cada sección de configuración, consulte el <a href="mod/directive-dict.html#Context">Context</a> de la directiva. Todas las directivas que está permitido usar en las secciones <directive type="section" module="core">Directory</directive> se pueden usar también en las secciones <directive type="section" module="core">DirectoryMatch</directive>, <directive type="section" module="core">Files</directive>, <directive type="section" module="core">FilesMatch</directive>, <directive type="section" module="core">Location</directive>, <directive type="section" module="core">LocationMatch</directive>, <directive type="section" module="mod_proxy">Proxy</directive>, y <directive type="section" module="mod_proxy">ProxyMatch</directive>. Sin embargo, hay algunas excepciones:</p> <ul> <li>La directiva <directive module="core">AllowOverride</directive> funciona en las secciones <directive type="section" module="core">Directory</directive>.</li> <li>Las directivas <directive module="core">Options</directive> <code>FollowSymLinks</code> y <code>SymLinksIfOwnerMatch</code> <directive module="core">Options</directive> funcionan solo en las secciones <directive type="section" module="core">Directory</directive> y en los ficheros <code>.htaccess</code>.</li> <li>La direcitva <directive module="core">Options</directive> no puede ser usada en secciones <directive type="section" module="core">Files</directive> y <directive type="section" module="core">FilesMatch</directive>.</li> </ul> </section> <section id="mergin"><title>¿Cómo se fusionan las distintas secciones?</title> <p>Las secciones de configuración se aplican en un determinado orden. Como este orden puede tener efectos significativos en como se interpretan las directivas de configuración, es importante entender cómo funciona este proceso.</p> <p>El orden de fusión es el siguiente:</p> <ol> <li> <directive type="section" module="core">Directory</directive> (excepto expresiones regulares) y <code>.htaccess</code> simultáneamente (si el uso de <code>.htaccess</code> está permitido, prevaleciendo sobre <directive type="section" module="core">Directory</directive>)</li> <li><directive type="section" module="core">DirectoryMatch</directive> (y <code><Directory ~></code>)</li> <li><directive type="section" module="core">Files</directive> y <directive type="section" module="core">FilesMatch</directive> simultáneamente</li> <li><directive type="section" module="core">Location</directive> y <directive type="section" module="core">LocationMatch</directive> simultáneamente</li> </ol> <p>Aparte de <directive type="section" module="core">Directory</directive>, cada grupo se procesa en el orden en que aparezca en los ficheros de configuración. <directive type="section" module="core">Directory</directive> (grupo 1 arriba) se procesa empezando por los componentes de la ruta al directorio más cortos. Por ejemplo, <code><Directory /var/web/dir></code> se procesará antes de <code><Directory /var/web/dir/subdir></code>. Si hay que aplicar varias secciones <directive type="section" module="core">Directory</directive> a un mismo directorio, se aplican en el orden en que aparezcan en el fichero de configuración. Las configuraciones incluidas mediante la directiva <directive module="core">Include</directive> se tratarán como si estuvieran dentro del fichero de configuración principal en lugar de la sección <directive module="core">Include</directive>.</p> <p>Las secciones incluidas dentro de secciones <directive type="section" module="core">VirtualHost</directive> se aplican <em>después de</em> las correspondientes secciones fuera de la definición del host virtual. Esto permite que la configuración especificada para los hosts virtuales pueda prevalecer sobre la configuración del servidor principal.</p> <p>Las secciones que aparecen después prevalecen sobre las que aparecen antes.</p> <note><title>Nota técnica.</title> Previamente a la fase de traducción de nombres (en la que se analizan los <code>Aliases</code> y <code>DocumentRoots</code> para calcular las correspondencias entre URLs y nombres de ficheros) se ejecuta una secuencia <code><Location></code>/<code><LocationMatch></code>. Los resultados de esta secuencia se desechan después de ejecutar la traducción. </note> <section id="merge-examples"><title>Algunos ejemplos</title> <p>Abajo se muestra un ejemplo para que se vea claramente cuál es el orden de fusión. Asumiendo que todas las secciones se aplican a la petición, las de este ejemplo se aplicarían en el orden A > B > C > D > E.</p> <example> <Location /><br /> E<br /> </Location><br /> <br /> <Files f.html><br /> D<br /> </Files><br /> <br /> <VirtualHost *><br /> <Directory /a/b><br /> B<br /> </Directory><br /> </VirtualHost><br /> <br /> <DirectoryMatch "^.*b$"><br /> C<br /> </DirectoryMatch><br /> <br /> <Directory /a/b><br /> A<br /> </Directory><br /> <br /> </example> <p>A continuación se muestra un ejemplo más concreto. Independientemente de las restricciones de acceso que se hayan establecido en las secciones <directive module="core" type="section">Directory</directive>, la sección <directive module="core" type="section">Location</directive> será evaluada al final y se permitirá acceso sin restricciones al servidor. En otras palabras, el orden de fusión es importante, de modo que ponga atención.</p> <example> <Location /><br /> Order deny,allow<br /> Allow from all<br /> </Location><br /> <br /> # Esta sección <Directory> no tendrá efecto<br /> <Directory /><br /> Order allow,deny<br /> Allow from all<br /> Deny from badguy.example.com<br /> </Directory> </example> </section> </section> </manualpage>