|
¿Vamos a hablar sobre esa tribu que opuso dura resistencia a los colonos norteamericanos del siglo XIX? No, nada de eso. No vamos a adentrarnos por el suroeste de los Estados Unidos ni por el norte de México en su busca. Están mucho más cerca de lo que crees, posiblemente tu servidor Web es uno de ellos.
|
|
Te preguntarás, ¿y qué pasa? Pues que, con un poco de suerte, tienes la posibilidad de configurarlo (al menos en parte) a tu medida aunque no seas el administrador del sistema. Así que enciendele una vela a Santa Administradora de los servidores para que su tocayo/a no haya invalidado esa posibilidad en tu servidor y sigue adelante.
|
|
Para empezar sólo necesitas dos cosas: Que tu servidor sea un Apache, y ganas de dar a tus páginas detalles autenticamente profesionales. Pero, ¿cómo saber si tu servidor es un Apache? Puedes usar dos vías: Si eres de los que prefieres que te lo den todo hecho un simple e-mail al administrador de tu servidor te sacará de dudas. Si por contra eres de aquellos a los que le gusta sacarse las castañas del fuego y obtener información rápidamente, entonces puedes usar el siguiente CGI para saber el tipo y versión de servidor que alberga tus páginas.
|
#!/usr/bin/perl
print "Content-type: text/html \n\n";
print "$ENV{'SERVER_SOFTWARE'}";
|
|
Si la respuesta es Apache x.x.x entonces puedes ponerte manos a la obra.
|
|
El archivo .htaccess
|
|
Cuando un servidor Apache recibe la petición de cargar un archivo determinado, primero busca un archivo oculto llamado (usualmente) .htaccess. El archivo se busca en el directorio que hipotéticamente debe contener el archivo solicitado y en los directorios de niveles superiores. Si lo encuentra, el servidor toma en consideración las directivas que contiene antes de responder a la petición del cliente.
|
|
Si, una vez instalado alguno de los ejemplos que se describen más adelante, el Apache se os resiste, no estaría de más que preguntarais a vuestro administrador si el servidor está configurado para buscar los ficheros .htaccess con ese nombre o si por contra lo busca con un nombre distinto. En ese último caso todo lo explicado aquí es válido con sólo cambiar .htaccess por ese otro nombre.
|
|
Las directivas que puede contener el archivo .htaccess son muy variadas. Su cometido va desde negociar con el cliente que hace la petición, el idioma en que quiere visualizar la página, hasta la protección de subdirectorios mediante password o número IP, pasando por la personalización de los iconos que aparecen al mostrar el contenido de un subdirectorio o la posibilidad de asociar tipos MIME con diferentes extensiones de archivos. Como es lógico algunas de estas directivas pueden haber sido invalidadas por el administrador del sistema. Si tu administrador es un paranoico de la seguridad que no sabe mucho de que va el tema puede, en el peor de los casos, haber invalidado (de forma totalmente injustificada) todas las directivas. Si este es tu caso te recomiendo que cambies de proovedor, alguien así no merece tener a su cargo la gestión de tus preciadas páginas.
|
|
Para que tus glándulas salibales empiecen a trabajar vamos a ver aquí dos de estas directivas: Como redirigir los mensajes de error típicos ("File not found", "Server Error", etc) a páginas personalizadas de error y como impedir que un cliente vea el contenido de un subdirectorio al hacer una petición sin incluir el nombre del archivo (i.e. una llamada del tipo http://tu.dominio/ ... /subdirectorio/). Incluir estas directivas es muy sencillo y darán un buen acabado a tus páginas.
|
|
Gestión de errores
|
En ocasiones se producen errores que muestran en el navegador las conocidas páginas con el encabezamiento File not found, Forbidden o Server Error entre otros. Esto suele romper la estética de nuestras páginas por dos motivos: Suelen estar en Inglés y son escuetos mensajes que nada tienen que ver con la apariencia que le hemos dado a nuestro site.
Los códigos de error más usuales son los siguientes:
|
401: El subdirectorio está protegido por número IP o por password y el intento de acceder a él no ha tenido éxito
403: El acceso al documento o directorio solicitado está prohibido
404: El documento solicitado no ha sido hallado
500: Error del servidor. Usualmente este error se da cuando se ha intentado ejecutar de forma incorrecta un CGI o bien debido a problemas en el servidor
|
|
Supongamos que queremos gestionar esos errores en todo nuestro espacio de disco del servidor. Para ello crearemos nuestras propias páginas (o CGIs) de respuesta y las alojaremos en uno de nuestros subdirectorios. Seguidamente llevamos a cabo los siguientes pasos:
|
1) Crear un archivo ASCII que contenga lo siguiente
ErrorDocument 401 URL local de la página de error 401
ErrorDocument 403 URL local de la página de error 403
ErrorDocument 404 URL local de la página de error 404
ErrorDocument 500 URL local de la página de error 500
Donde debe sustituirse URL local de la página de error XXX por la URL local (sin el http://tu.domin.io) de la página de error personalizada que hayais creado
|
|
2) Llevar ese archivo ASCII a nuestro directorio raíz del servidor
|
|
3) Renombrar ese archivo como .htaccess (el punto delante del nombre es fundamental)
|
|
Si quieres que esta gestión de los errores sólo sea efectiva por debajo de un determinado subdirectorio, entonces debes poner el archivo .htaccess en ese subdirectorio.
|
|
Impedir el acceso al listado de un directorio
|
|
En ocasiones no deseamos que el contenido de un directorio sea visible mediante una llamada a ese directorio. La solución suele pasar por poner en cada subdirectorio una página index.html. No obstante, el servidor Apache nos permite solucionar el problema de una forma más elegante y versátil.
|
|
Cuando el servidor recibe una llamada a un subdirectorio en la que no se especifica el nombre de un archivo, éste suele buscar archivos con el nombre index.shtml, index.html o similares. Si no se encuentra ningún archivo con ese nombre, entonces el servidor envia al cliente una página que contiene un listado de lo que contiene dicho directorio. Evitar eso es sumamente sencillo. Además podemos imponer el nombre (o nombres) que por defecto debe buscar el servidor ante una petición de este tipo. La directiva que controla esta opción es DirectoryIndex y su sintaxis es
|
|
DirectoryIndex fichero1 [fichero2 ...] /path/a/la/pagina/de.error
|
|
Como es habitual en las directivas del .htaccess, esto tendrá efecto en el subdirectorio que aloja al archivo .htaccess y en todos los que se encuentren por debajo de él. Así si quisieramos impedir el acceso al listado de cualquiera de nuestros directorios pondrímos el .htaccess en nuestro directorio raíz y en él insertaríamos, por ejemplo, la línea
|
|
DirectoryIndex miindice.html index.shtml index.html index.htm /pepe/miserrores/noverdir.htm
|
|
Escrito por Justino
|