Ultima revisión 14/11/2014
Errores comunes en el .htaccess
Bueno, después de una larga temporada sin publicar nada, me motiva el hecho de haber publicado la nueva versión de Islavisual y de nuevos conocimientos que, creo, no están publicados en internet, así que, vamos al lío. ¿ quién no se ha encontrado alguna vez con que el .htaccess no aplicaba las reglas, que el log decía que tenía errores extraños que no tienen ni piés ni cabeza o, cosas como client denied by server configuration ?
Todos estos errores suelen tener una explicción sencilla que, a menudo, no solemos ver y nos llevan a exprimirnos el cerebro durante horas. Os invito a seguir leyendo...
Por poneros en antecedentes. Hace tiempo me encontré con una situación, cuanto menos, inhóspita. Resulta que estaba montando una web bajo un servidor Apache en Windows y PHP y, cuando me puse a configurar la URLs Amigables y fui a probarlas, no funcionaba. Lo primero que pensé fue que el módulo de mod rewrite no estaba presente, por lo que, abrí el httpd.conf y lo comprobé. Estaba cargado y funcionando. Luego pensé... ¿ pues será cuestión de que falta meter las reglas dentro de un IfModule ? ... pues no. Así estuve horas y horas, probando cosas y de nada sirvió tanto esfuerzo y empeño porque el error no iba por ahí...
Ya lo dijo Einstein, si quieres resultados distintos, empieza por hacer cosas distintas...
Error: AH01630: client denied by server configuration
Este mensaje de error, como algunos sabréis, es muy genérico pero nos da la primera pista de que algo no va bien. Ahora, lo que hay después de ese mensaje, sí es importante:
<IfModule takes one argument, Container for directives based on existence of specified modules
El error que cometemos todos es, valga la redundancia, ignorar este error. Si buscáis en Internet os encontraréis con preguntas como ¿ por qué funciona en Producción y no en Desarrollo? o ¿ Por qué está trabajando la web en el Hosting, pero no en Local ?. Si continuáis buscando, en verdad os digo que, no mucha información fiable y, menos aún en español pero, ¿ qué significa o qué nos dice este mensaje de error ?. La pista está en la palabra argument ya que, lo que nos quiere decir es que no le llegan los parámetros bien y, amigos míos, eso ya nos conduce a pensar que hay un error de codificación.
Pues sí, así es. El problema es que existe un error de codificación y esto es así porque el .htaccess es un archivo que se creo utilizando sistemas UNIX y por tanto, para funcionar, necesita de codificaión UTF-8 y saltos de línea de tipo UNIX. En definitiva, que, como os podéis imaginar, la forma de solucionarlo es muy simple y en este caso utilizaremos un programa conocido por todos... Notepad++.
Empecemos..., abrimos nuestro .htaccess con NotePad++ y pinchamos en la opción del menu principal Codificación. Cuando tenemos este tipo de errores, lo más frecuente es que nos aparezca selecionado Codificar en ANSI. Si es así, pinchamos en Convertir a UTF-8 sin BOM. Una vez hayamos pinchado en la subopción de Convertir a UTF-8 sin BOM, la opción seleccionada se nos cambiará a Codificar en UTF-8 sin BOM.
Con esto ya tenemos casi todo hecho. Ahora pinchamos en la opción del menu principal Editar y llevamos el ratón hasta la opción de Conversión fin de línea y comprobamos que esté seleccionada (en un color menos visible) la subopción de Convertir a formato UNIX. Si no es así, pinchamos sobre ella.
Ahora guardamos el archivo y ya está. Ahora debería funcionar.