18. Apache - Tareas comunes

1.1 Establecer el directorio raíz

  • El directorio raíz de un sitio web se determina mediante la directiva DocumentRoot <ruta_de_directorio> (ámbito: sv)
  • Su valor predeterminado es el directorio htdocs en el directorio de instalación de Apache.
  • Si la ruta de directorio no es absoluta, se toma como relativa al valor de la directiva ServerRoot (directorio de instalación de Apache)
  • Es importante reflejar en el grupo Directory correspondiente cualquier modificación en el valor de esta directiva.
  • Leyenda:

s: configuración de servidor
d: directory
v: servidor virtual
h: .htaccess


1.2 Directorios virtuales

  • Mediante la directiva Alias ruta_URL ruta_física (ámbito: sv) podemos acceder a contenido ubicado fuera del directorio indicado en DocumentRoot. Las peticiones a la ruta URL indicada serán aplicadas al directorio físico indicado (ej: Alias /dirVirtual /www/virtual)
  • Otro posible uso de esta directiva es acceder al mismo contenido mediante URLs distintas.
  • La directiva AliasMatch es similar, pero emplea expresiones regulares ( Ej: AliasMatch ^/document(os|acion)(.*) /www/htdocs/documentacion$2 )
  • También es posible acceder a contenido fuera del directorio indicado en DocumentRoot mediante enlaces simbólicos (si lo permite la directiva Options mediante su valor FollowSymLinks), pero se desaconseja, ya que:
    • se tiene un menor control sobre estos enlaces existentes a contenido externo (no se ven reflejados en los archivos de configuración)
    • no precisa establecer permisos mediante directivas Directory sobre el contenido externo.

1.3 Redirección a otro servidor

  • Para redirigir al cliente a una URL distinta empleamos Redirect status ruta_URL URL_destino (ámbito: svdh)
    • ruta_URL es una url absoluta con respecto al directorio raíz (comienza con /)
    • URL_destino es una URL completa (http://...)
    • status puede ser:
      • permanent: indica que el recurso ha sido definitivamente reubicado en la nueva URL indicada.
      • temp: redirección temporal (status predeterminado).
      • seeother: indica que la url ya no es válida y remite a una dirección en la que poder encontrar el contenido que ha reemplazado al anterior.
      • gone: indica que el recurso ha sido eliminado definitivamente.
  • Podemos emplear RedirectMatch de forma análoga utilizando expresiones regulares.

Ej: RedirectMatch (.*)\.gif$ http://www.otroServidor.com$1.jpg


1.4 URLs insensibles a mayúsculas

  • Mediante la directiva CheckSpellingon|off (ámbito: svdh), que se incluye en el módulo mod_speling, al activarla indicamos al servidor que antes de servir un error de “archivo no encontrado”, intente realizar comparaciones con el nombre del recurso solicitado y los existentes en el mismo directorio ignorando mayúsculas y minúsculas y permitiendo un error tipográfico (una letra omitida o de más, o 2 caracteres traspuestos).

1.5 Documento predeterminado

  • Mediante DirectoryIndex documento [documento] … [documento] (ámbito: svdh) podemos especificar los nombres de los documentos predeterminados para mostrar cuando se recibe una petición que apunta a un directorio, sin especificar archivo.

1.6 Mensajes de error personalizados

  • Con ErrorDocument código_de_error documento (ámbito: svdh) podemos emitir mensajes de error personalizados.
  • Ejemplo:
    • ErrorDocument 404 /www/errores/mapaWeb.html
    • ErrorDocument 404 “Objeto no encontrado”.

1.7 Permisos de acceso al contenido

  • Mediante las directivas Order, Allow y Deny (ámbito: dh) se determina el acceso al contenido según IP, nombre del host o cualquier característica del cliente capturada en variables de entorno.
  • Order determina el orden en que son evaluadas las directivas:
    • Order Deny,Allow indica que se evalúan primero las directivas de denegación de permisos.
    • Order Allow,Deny indica que se evalúan primero las directivas de concesión de permisos.
  • Allow|Deny from all|host|env=var [host|env=var]
  • Ejemplo:

		  Allow from 192.168.1.10
		  Allow from 192.168
		  Allow from laboratorio.es


1.8 Operaciones sobre el contenido

  • Mediante la directiva Options[+|-]option [[+|-]option] ...(ámbito: svdh) definimos las operaciones permitidas sobre el contenido.
    • All: (PREDETERMINADO): todas las opciones permitidas, excepto MultiViews.
    • None: ninguna opción permitida.
    • ExecCGI: permite la ejecución de scripts CGI.
    • FollowSymLinks: Se permite seguir enlaces simbólicos.
    • Includes: Se permiten las funciones Server-side includes de mod_include.
    • IncludesNOEXEC: Las funciones Server-side includes están permitidas, excepto #exec cmd y #exec cgi, que están deshabilitadas.
    • Indexes: Muestra un listado del contenido del directorio como respuesta a una url que apunta a un directorio sin documento predeterminado.
    • MultiViews: Se permiten vistas múltiples según el contenido, a través del módulo mod_negotiation.
    • SymLinksIfOwnerMatch: Se seguirán los enlaces simbólicos en los casos en los que el propietario del enlace y del destino sean el mismo.
  • Si en todas las opciones utilizadas anteponemos un signo + o – (según si queremos aplicar o denegar cada opción), en lugar de sobreescribirse, las opciones se fusionarán:

<Directory /www/htdocs>
Options Indexes
FollowSymLinks
</Directory>

<Directory/www/htdocs/dir>
Options Includes
</Directory>

<Directory /www/htdocs >
Options Indexes

FollowSymLinks
</Directory>

<Directory /www/htdocs/dir>
Options +Includes –Indexes
</Directory>

Sobre /www/htdocs/dir se aplica: Includes

Sobre /www/htdocs/dir se aplican: Includes, FollowSymLinks


1.9 Directorios web personales

  • Empleando la directiva UserDir (ámbito: sv) podemos definir directorios web para los usuarios del sistema.
  • Si después de UserDir aparece:
    • ruta_relativa: se asume que es relativa al directorio home de cada usuario (ej: UserDir www traduciría http://servidor/~usuario/archivo.html a /home/usuario/www/archivo.html
    • ruta_absoluta: se busca un directorio con el nombre del usuario en esa ruta (ej: UserDir /www/usuarios traduciría http://servidor/~usuario/archivo.html a /www/usuarios/usuario/archivo.html
    • ruta_absoluta con *: se traduce el * por el nombre del usuario (ej: UserDir /www/usuarios/*/htdocs traduciría http://servidor/~usuario/archivo.html a /www/usuarios/usuario/htdocs/archivo.html
  • Se pueden restringir los usuarios afectados por esta directiva:
    • UserDir disabled: deshabilita todas las traducciones de nombre de usuario a directorio excepto para aquellos usuarios explícitamente mencionados en UserDir enabled.
    • UserDir disabled <usuario> [<usuario>] … [<usuario>]: los usuarios que aparezcan en esta lista nunca tendrán traducción a directorio, aunque aparezcan en UserDir enabled.
    • UserDir enabled <usuario> [<usuario>] … [<usuario>]: los usuarios que aparezcan en esta lista tendrán traducción a directorio aunque un UserDir disable global esté en vigor, pero no si aparecen explícitamente en una lista de UserDir disabled.
vidalmb_admin – Sáb, 21/07/2007 – 21:35