Conociendo el fichero .htaccess

htaccess

Hablemos del fichero .htaccess. No pretendo realizar una entrada extensa de todas las cosas que se pueden llegar a realizar con este fichero, sino de explicar un poco que es y para que nos puede servir.

El servidor apache permite multitud de configuraciones en su archivo de configuración (apache2.conf o httpd.conf según de que distribución de Linux nos encontremos). Allí por defecto vienen preestablecidas algunas de manera predeterminada. Este archivo que podéis encontrar en la ruta /etc/apache2/apache2.conf (en debian/ubuntu, ruta que variará según la distribución, por ejemplo en arch: sudo nano /etc/httpd/conf/httpd.conf) permite configurar como se comportará el servidor en determinadas circunstancias.

El .htaccess es un archivo de configuración de directorios de Apache que nos permite establecer nuestras propias reglas , directivas o pará,etros sin necesidad de escribirlas en el archivo de configuración de apache antes mencionado.

Que reglas nos vendría bien por ejemplo utilizar. Pues por ejemplo de entrada hay dos  dos básicas e interesantes: evitar que se pueda ver el contenido de determinado directorios y sobreescribir determinadas url para ocultar algún parámetro que se haya pasado en ellas. En el primer caso, cuando en nuestra aplicación tenemos por ejemplo un directorio, vamos a llamarlo pages, y dentor  de el tenemos diferentes páginas, por ejemplo uno.html y dos.html. Cuando un usuario teclease en el navegador: midominio.es/pages/, conseguiría visualizar el contenido de ese directorio y ver que existen esos ds archivos. Esto es un problema de seguridad. Quizás no en un ejemplo tan sencillo, pero en aplicaciones mas compejas don de hay directorios que incluyen los ficheros con la configuración de la conexión ala  base de datos esto puede ser crítico.

El segundo caso puede ser también importante para la seguridad pero además es una manera más elegante de presentar las urls. Si un usuario ha hecho login en la página, le redirgiremos al index con un parámetro pasado por get en la url del tipo: midominio.es/index.php?pag=users. No sería más interesante que usuario simplemente viera midominio.es sin nada más?. Pues esto lo conseguimos sobreescribiendo las urls según unas reglas que definiremos en el archivo .htaccess.

Para poder utilizar el archivo .htaccess hay que hacer primero que el servidor apache le “haga caso”, para ello hay que habilitar esto en el fichero antes mencionado (apache2.conf o httpd.conf ), para debian:

Hay que buscar la línea donde se haga una referencia al fichero .hataccess (recordar que si abris el archivo con el editor nano con control+w podeis introducir el texto a buscar). Tras encontrarlo buscaremos a continuación la línea donde ponga AllowOverride None y sustituirla por AllowOverride All.Tras cambiarlo , control+x para aceptar los cambios y cerrar el archivo.

De esta manera ya se pueden sobreescribir las reglas por defecto de apache. Bien ahora nos dirigimos a la raíz de nuestra aplicación y creamos un archivo llamado .htaccess. El punto delante es importante, en sistemas unix los archivos ocultos empiezan con un punto, de manera que este arc hivo lo será. Abrimos el archivo para su edición y escribimos:

Como está explicado en los comentarios, evitamos primero  que se indexen los directorios que están dentro de nuestro proyecto. Luego habilitamos la capacidad de reescritura. Y finalmen te establecemos la regla de sobreescritura. En este caso lo que queremos es que cuando en nuestra aplicación estamos queriendo pasar una variable por get (pag=users) que hará que al recibirla se cargue el contenido de la sección de usuarios, y en vez de mostrarse la url midominio.es/index.php?pag=users se mostrará midominio.es/users ya que se va a utilizar lo que se pase como valor de la variable pag, como valor para sustiruir index.php?pag=. El $1 es la variable que va a recoger el valor de variable pasada por get pag. Y la expresión ^(\w+)$ hace que cualquier caracter que se almacene en esa variable $1 se utilize para sustituir la url que se pone a continuación de la expresión regular.

Antes de que os lanceis a probarlo teneis que aseguraros de que el módulo de reescritura está habilitado. Para ello podeis comprobar vuestro archivo phpinfo y buscar (control +  F) mod_rewrite a ver si lo encontrais. O directamente habilitarlo, para ello:

Y tras ello reiniciar el servidor apache

Ó:

Bueno espero que os haya parecido interesante y útil e investigueis más sobre este importante archivo .


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *