Skip to main content

Qué es .htaccess, para qué sirve y códigos fundamentales

Qué es .htaccess, para qué sirve y códigos fundamentales

25/02/2018 - 08:15

Si estás pensando en iniciar un blog o un proyecto web, deberías prepararte para asimilar una gran cantidad de información técnica sobre el funcionamiento de los servidores, de los sistemas de gestión de contenidos (CMS) e incluso aprender algunas nociones de programación CSS y PHP para lidiar con éxito con el proyecto y mantener tu web a salvo de ataques externos. Una buena forma de comenzar es conocer cómo funciona el archivo .htaccess y aprender algunos trucos útiles para .htaccess.

El archivo .htaccess (HyperText Access o acceso de hipertexto) es un archivo de configuración del software de servidor Apache, que contiene las directivas que definen el comportamiento de Apache. El archivo.htaccess indica en todo momento qué puede hacer y qué no el usuario que visita tu web, así como configurar el comportamiento del servidor ante errores de conexión u optimizar la carga de las páginas de tu blog.

Por lo tanto, podríamos decir que este pequeño archivo de apenas unos kilobytes, es la llave maestra que abrirá todas las puertas de tu web. Algo que puede ser tan útil como peligroso y que debe ser configurado y protegido con especial cuidado.

¿Qué puede hacer exactamente .htaccess?

El archivo .htaccess de tu web será como la tabla de los mandamientos para el servidor Apache, que cumplirá estrictamente lo que se le indique en el archivo .htaccess.

No tiene porqué existir un solo archivo .htaccess, sino que puede existir un .htaccess para cada directorio si lo consideras necesario. El comportamiento de este archivo es jerárquico en el árbol de directorios de tu web, por lo que, si tienes un archivo .htaccess en el directorio raíz de la web, las instrucciones que indiques en ese archivo se aplicarán a toda la web. En cambio, si creas un archivo en alguna de las carpetas de tu web, las directrices de ese archivo solo se aplicarán al contenido de esa carpeta y subcarpetas, por lo que no afectará al resto de directorios de tu web.

Cómo instalar un servidor web en tu ordenador con XAMPP

Cada vez que algún visitante accede a tu web, el servidor Apache que tienes instado en tu servidor web consulta el archivo .htaccess y dirige ese tráfico a la página de inicio que le indicas en ese archivo. Si existe algún error de conexión con esa página, Apache vuelve a consultar el archivo .htaccess y redirige al usuario hacia una determinada página de error que previamente habrás configurado en él. Son las famosas páginas de error 404.

De la misma forma, el archivo .htaccess se utiliza para configurar otros muchos aspectos de tu web; como las tareas de protección, mediante la restricción del acceso a determinadas carpetas de tu servidor o bloqueando el acceso a determinadas direcciones IP; redireccionar a pantallas de error personalizadas, como en el caso de los errores 404; evitar vulnerabilidades y accesos no permitidos, como el listado de los directorios que forman tu web o reducir el tiempo de carga de tu página.

 

Además, gracias al archivo .htaccess puedes organizar las secciones de tu web de forma que, si por ejemplo, creas un subdominio para una determinada acción en tu web, el servidor Apache redirija el tráfico de ese subdominio a una determinada carpeta de tu servidor. Es decir, que sería como tener varias webs diferentes dentro de tu espacio web.

Antes de empezar…

Antes de empezar a añadir o modificar directivas desde el .htaccess, conviene realizar una advertencia. Cualquier error en la inserción de los comandos (son habituales los errores tipográficos por no respetar un espacio, o no emparejar los paréntesis o corchetes), provocaría que Apache no interprete correctamente el archivo .htaccess y se produzcan errores de funcionamiento en el servidor, lo cual dejaría a tu web fuera de servicio.

Cómo crear un blog con Wordpress

Nuestra recomendación es que, antes de modificar nada, realices una copia de seguridad de todos los directorios de tu web, incluidos los archivos .htaccess originales. De ese modo, si la modificación de este archivo tiene alguna consecuencia, no perderás la información de tu web y podrás recuperarla sin mayores problemas.

Otro consejo importante es añadir comentarios en cada nueva instrucción que añadas a tu archivo .htaccess. Estos comentarios te permitirán localizar más rápidamente los comandos de las diferentes instrucciones.

Para añadir una línea de comentario solo tienes que añadir el símbolo # antes del comentario y el servidor Apache no lo leerá. La línea del comentario quedaría algo así: #Así se añade un comentario.

Si el comentario ocupa varias líneas, el signo # tiene que situarse al principio de cada una de ellas.

Comandos útiles para el redireccionamiento desde .htaccess

El archivo .htaccess te permite realizar algunas tareas sencillas en la configuración del servidor Apache en el que se encuentra alojada tu web, pudiendo redirigir el tráfico entrante a una determinada carpeta y muchas otras cosas.

Usa un dominio sin WWW

Añadiendo siguiente código al archivo .htaccess podrás usar un domino sin el prefijo www en tu web mediante un direccionamiento 301. Eso sí, para no confundir a los buscadores (algo que te penalizará en el SEO), debes elegir entre usarlo siempre con www o sin él, pero evita mezclarlos.


#redirección permanente de dominio www a sin www

RewriteEngine on

Options +FollowSymLinks

RewriteCond %{HTTP_HOST} ^www\.midominio\.com$ [NC]

RewriteRule ^(.*)$ http://midominio.com/$1 [R=301,L]

Activa la función multisitio de Wordpress

Envía visitantes a tu nuevo dominio

Una buena forma de cambiar el dominio de tu página web sin que te penalice el tráfico es recoger todo el tráfico que entra desde el dominio antiguo y redirigirlo automáticamente al nuevo dominio. Para hacerlo inserta el siguiente código en el .htaccess de web.


#redireccion de un dominio viejo al nuevo

RewriteEngine On

RewriteRule ^(.*)$ http://nuevodominio.es/$1 [R=301,L]

Cambia la página de inicio por defecto

Insertando esta instrucción en el archivo .htaccess podrás cambiar la página de inicio por defecto de tu web y, en lugar de ser Index.php o Index.html, podrás elegir cualquier otra de tu página para que aparezca la primera al acceder al sitio. Por ejemplo, si es una web donde quieres destacar tu marca personal, podrías establecer que lo primero que se cargue es la página Quiensoy.html, en lugar de la predeterminada Index.php.

Para ello solo tienes que indicar una serie de nombres de página para que servidor elija por preferencia.


#cambiar página de inicio por defecto

DirectoryIndex pagina1.html pagina2.htm pagina3.html pagina4.php

Personaliza tus páginas de error 404, página no encontrada

Cuando una URL de tu web lleva a un callejón sin salida se produce el error 404 que indica que la página que se buscaba no existe o no se encuentra disponible. Puedes crear tus propias páginas 404 personalizadas y configurar el archivo .htaccess para que las muestre cuando se produzca este error.


#Carga tu propia página de error 404

ErrorDocument 404 /errores/tupágina404.html

En la segunda mitad de esta orden debes indicar la ruta a tu página de error 404.

Protege tu web desde el .htaccess

La seguridad y la protección de los archivos que forman tu web es otra de las funciones que puedes controlar desde el archivo .htaccess.

Algo tan sencillo como proteger la escritura de terceros de los archivos .htaccess, ocultar los directorios que forman tu web, ocultar las extensiones de los scripts que usa para dificultar las inyecciones de código malicioso, bloquear el hotlinking o bloquear determinados bots de spam puede hacerse directamente desde el .htaccess con solo insertar la instrucción adecuada.

Así robaba la CIA contraseñas de servidores y webs, según Wikileaks

Protege el archivo .htaccess

Para evitar que nadie más que tú pueda modificar el archivo .htaccess de tu blog, activa la protección y evitar que el archivo sea accesible insertando esta instrucción.


#prevenir acceso a los archivos .htaccess

<files .htaccess>

order allow,deny

deny from all

</files>

Protege los directorios de tu web

Otro uso habitual de .htaccess es el de bloquear el acceso de los usuarios a determinados directorios (o a todos) de tu web. Bastará con insertar la instrucción adecuada en un archivo .htaccess en el directorio que quieres proteger. De ese modo, cuando alguien intente acceder a ellos obtendrá un mensaje de error que le impedirá ver el contenido de la carpeta.


#denegar el acceso a un directorio

deny from all

Además, también puedes evitar que se listen los directorios que forman tu web, por lo que puede ser buena idea añadirle esta instrucción a la anterior:


#evitar listado de directorios

IndexIgnore *

Banea a usuarios y bots malignos desde .htaccess

Desde el archivo .htaccess también puedes administrar las opciones de acceso a tu web. De ese modo, si en los logs del servidor detectas una actividad sospechosa desde una determinada dirección IP que aumenta la carga del servidor, puedes bloquear esa dirección IP para impedirle el acceso y liberar al servidor.

En la mayoría de los casos se trata de bots de spam que visitan tu web rastreando el contenido. Evítalo con esta sencilla instrucción:


#Bloquear acceso desde determinas IP

Order deny, allow

Allow from All

Deny from XXX.XXX.XXX.XXX

Deny from XXX.XXX.XXX.XXX

Evitar el Hotlinking

El hotlink consiste en mostrar un contenido que se encuentra en tu servidor (como una foto o un vídeo) en otra página web distinta. De ese modo, aunque el visitante realmente se encuentra en otra web, es tu servidor soporta toda la carga de mostrar el contenido. Una práctica muy poco ética, pero lamentablemente muy extendida.

Para evitar esta “parasitación” de tus recursos, inserta la siguiente instrucción en tu .htaccess.


#evita el hotlink

RewriteEngine on

RewriteCond %{HTTP_REFERER} !^$

RewriteCond %{HTTP_REFERER} !^http://(www\.)?tudominio\.com/.*$ [NC]

RewriteRule .*\.(jpg|gif|bmp|png|mp4)$ [L]

En última línea de la instrucción, introduce los formatos de archivo del contenido que quieres proteger.

Oculta extensiones de script

Ocultar las extensiones de los diferentes scripts que utilizas en tu web también puede ser una excelente opción para ponerles las cosas un poco más difíciles a los posibles atacantes. Ojos que no ven…

Con esta instrucción puedes configurar el archivo .htaccess para que el servidor Apache camufle los scripts con extensión .foo, los más habituales, para que se muestren como si fueran archivos .php o .cgi.


# sirve archivos foo como archivos php

AddType application/x-httpd-php .foo

# sirve archivos foo como archivos cgi

AddType application/x-httpd-cgi .foo

Optimiza el funcionamiento de tu web

Otra de las cualidades del archivo .htaccess es que permite realizar optimizaciones en el rendimiento de tu web. Habilitar la descarga de los archivos multimedia en lugar de aumentar la carga del servidor al reproducirlos, comprimir los archivos para que tu web consuma menos datos al cargarse o habilitar la caché para agilizar la carga de tu web.

Indica al navegador que descargue los archivos multimedia en vez de mostrarlos

Si alojas vídeos o contenido multimedia en tu sitio web, el comportamiento por defecto al ejecutarlo será reproducirlo en el propio navegador, lo cual aumentará la carga de trabajo de tu servidor y hará que tu web no se cargue tan rápido.

Configura el archivo .htaccess para cambiar esa opción y dar la opción al visitante de descargar el contenido multimedia a su dispositivo.


#opción de descargar los archivos multimedia

AddType application/octet-stream .avi

AddType application/octet-stream .mpg

AddType application/octet-stream .wmv

AddType application/octet-stream .mp3

Al final de cada línea de instrucción puedes incluir las extensiones de tus archivos multimedia, añadiendo todas las que necesites.

Comprime los archivos de tu web y reduce la cantidad de datos necesarios

La mayor parte del tráfico web actual se realiza desde dispositivos móviles con tarifas de datos limitadas, y en ocasiones con mala cobertura y, por extensión, con una velocidad más reducida.

Incorporando un conjunto de instrucciones al archivo .htaccess conseguirás comprimir los archivos que forman tu web haciendo que consuman menos recursos durante su carga.


#comprimir archivos de texto, html, javascript, css, xml

AddOutputFilterByType DEFLATE text/plain

AddOutputFilterByType DEFLATE text/html

AddOutputFilterByType DEFLATE text/xml

AddOutputFilterByType DEFLATE text/css

AddOutputFilterByType DEFLATE application/xml

AddOutputFilterByType DEFLATE application/xhtml+xml

AddOutputFilterByType DEFLATE application/rss+xml

AddOutputFilterByType DEFLATE application/javascript

AddOutputFilterByType DEFLATE application/x-javascript

Activa la caché para las imágenes de tu web

Si tu blog o página web tiene muchas fotos, es probable que su carga sea más lenta de lo normal. Puedes agilizar la carga de imágenes de tu web insertando algunas instrucciones en el archivo .htaccess. De ese modo, conseguirás que el navegador de tus visitantes guarde una caché de ellas y, la próxima que te visite, la carga de imágenes será mucho más rápida.


#Cache de imágenes en el navegador durante un mes

<FilesMatch "\.(ico|jpg|jpeg|png|gif)$">

Header set Cache-Control "max-age=2592000, public"

</FilesMatch>

Estos son solo algunos ejemplos del enorme potencial que esconde el archivo .htaccess, desde el que puedes controlar absolutamente cualquier comportamiento de tu página web. Desde mejorar el SEO de tu blog y la experiencia de uso, hasta aumentar el nivel de seguridad de tu web.