Qué es el archivo .htaccess y qué puedes hacer con él

Vamos a explicar qué es el archivo .htaccess y para qué puedes usarlo. También veremos cómo editarlo independientemente del CMS que uses

✅ ¿Qué te vamos a contar?

Si alguna vez has estado enredando con páginas web, seguro que has sentido un escalofrío al oír su nombre. Sabemos que editar el archivo .htaccess es uno de los caminos más cortos para cargarte una web, ¿pero realmente sabemos qué función tiene este archivo?

Sigue leyendo y lo vemos 👇

¿Qué es el archivo .htaccess?

El .htaccess es un archivo de texto que se encuentra alojado en el servidor de una página web, y cuya función es controlar diferentes funcionalidades del servidor. Se utiliza en servidores apache, cuyo software es el encargado de ejecutar las “órdenes” que se incluyen en este documento.

En el archivo .htaccess es donde se le indica al servidor que redirecciones se tienen que hacer, como tratar los errores 404 y mucho más. Con este archivo podremos proteger la web con contraseña y hasta editar la manera en la que se generan las diferentes urls.

En este post vamos a hablar de los usos más comunes de este archivo. Antes de explicar los diferentes usos, vamos a ver cómo podemos acceder a este archivo y editarlo.

configuración archivo .htaccess
Este es un ejemplo de cómo se ve el encabezado del archivo .htaccess que tenemos en la web

Cómo acceder y configurar el .htaccess.

Si tienes una web que se ejecute en un servidor Apache, tienes un archivo .htaccess. Siendo indiferente el CMS que uses, podrás acceder a este archivo para editarlo.

Independientemente de lo que vayas a hacer, te recomendamos  ⛔hacer una copia de este archivo antes de editarlo⛔, ya que es muy común que copiemos y peguemos algo mal y acabe generándose algún error, como por ejemplo bucles infinitos de redirecciones.

Acceder a .htaccess a través de FTP.

Esta solución es válida para cualquier web. El FTP (File Transfer Protocol) es un protocolo de comunicación para intercambiar archivos entre sistemas conectados a una red.

Para poder utilizarlo, nos tendremos que conectar al servidor través de un programa que nos permita comunicarnos con el servidor. En este caso te recomendamos Filezilla, que es el software más habitual para acceder al servidor, descargarse el .htaccess y editarlo.

Pasos para conectarse al FTP a través de Filezilla.

En primer lugar, tenemos que crear una cuenta de FTP en nuestro servidor, para poder contar con un usuario y una contraseña. Para ello

  1. Vamos a Cpanel. En la parte de archivos, habrá que ir a “Cuentas FTP” para crear una cuenta con su usuario y contraseña
acceder a ftp

 

    2. Una vez hecho, iremos a “Conexiones FTP” donde aparecerán los datos que tenemos que introducir en Filezilla. Estos datos son servidor, nombre de usuario, contraseña y puerto.
filezilla edición .htaccess

3. En cuanto Filezilla valide la conexión podremos seleccionar el archivo .htaccess, que se encontrará en la carpeta principal. Si no aparece, puedes buscarlo con el propio Filezilla   y si sigue sin aparecer, tienes que asegurarte que el servidor está mostrando archivos ocultos

buscar archivos en Filezilla

Buscando en Filezilla debería aparecer. Si aún así no aparece, tendremos que comprobar que está activo el mostrar archivos ocultos.

Pasos para conectarse al FTP a través de File Manager.

File Manager es una solución que ofrecen las mayoría de los hosting, y que permite hacer los mismo que Filezilla, pero directamente desde el navegador de nuestra web.

file manager Cpanel

Para utilizarlo:

  1. Tenemos que ir a nuestro hosting y seleccionar File Manager (en nuestro caso usamos Raiola Networks).
  2. Tenemos que habilitar que se muestren archivos ocultos.
  3. Buscamos el .htaccess, el cual suele estar en la carpeta public_html. Si por algún casual no se encuentra en esa carpeta, podemos buscarlo.
archivos ocultos finamanager cpanel

Editar el htaccess con WordPress.

Hay muchas formas de modificar el archivo .htaccess si estás usando wordpress. La más fácil es a través de un plugin. Nosotros recomendamos no utilizar uno de los muchos plugins específicos que hay, ya que cuantos menos plugins utilices mejor.

En La Vía Digital, utilizamos el plugin Rank Math que aparte de ser el mejor plugin de SEO, permite editar directamente archivos como el robots.txt y .htaccess.

Para editarlo directamente tendremos que ir a Rank Math, Ajustes SEO y editar .htaccess.

editar .htaccess rankmath

Usos más comunes del .htaccess

Dentro de todo lo que podemos hacer con este archivo, vamos a ver los usos más frecuentes que le podemos dar en una web normal (por ejemplo en un blog). Usos más avanzados los trataremos en otro post.

Redirecciones 301.

Como hemos dicho anteriormente, es aquí donde se configurar las redirecciones de la web. Si por ejemplo usas un plugin en WordPress, dicho plugin modificará el .htaccess por tí.

IMPORTANTE⛔ Antes de hacer cualquier modificación, tienes que tener en cuenta que las diferentes reglas de redirección en .htaccess pueden ser incompatibles entre si y generar bucles de redirecciones.

Te recomendamos al 100% probar tu archivo .htaccess y las reglas de redirección aquí: https://htaccess.madewithlove.be/

ahora veremos los códigos necesarios para realizar las redicrecciones 301 más comunes (copia, prueba y cuando funcione lo pegas en tu .htaccess.)

Redirigir la versión http a htpps.

Si tu web no tiene protocolo SSL estás tardando en implementarlos. Si usas wordpress, la mayoría de plugins que añaden un certificado SSL gestionarán por si mismos estas redirecciones, pero por si acaso te la dejamos aquí.

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Redirigir versión sin www a www.

Deberás elegir si tu web contará con www o no. Es indiferente a nivel seo, pero solo puede existir un tipo de url, o bien con www o sin ellas.  

Simplemente tienes que sustituir tuweb.com por tu dominio

RewriteEngine On
RewriteCond %{HTTP_HOST} ^tuweb.com [NC]                                                            RewriteRule ^(.*)$ https://www.tuweb.com/$1 [L,R=301]

Redirigir versión con www a sin www.

Por si prefieres que tus urls no tegan www.

RewriteEngine On                                                                                                      RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

Redirigir url sin / a url con /

Cuando coexisten urls con la barra y sin ella, estamos hablando de dos urls diferentes. Esto se suele conocer como urls espejo y si no lo redireccionamos o le añadimos una etiqueta canónica hacia la versión que prefiramos, estamos multiplicando por dos las urls de la web sin ningún motivo.

 RewriteEngine on                                                                                                     RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^(.*[^/])$ /$1/ [L,R=301]

Redirección simple de una página a otra.

Si queremos redirigir de la página A (https://www.ejemplo.com/pagina-A)  a la página B (https://www.ejemplo.com/pagina-B)

Redirect 301 /pagina-A https://www.ejemplo.com/pagina-B

Redirigir un directorio en .htaccess.

Imaginemos que quiero mover todos mis post del blog (Ejemplo.com/blog/noticia-1) a otro apartado de la web (/novedades/) y no quiero ir post a post.

Con una redirección 301 lo solucionamos:

RewriteRule ^blog/(.*)$ /novedades/$1 [R=301,NC,L]

y mandamos todo lo que cuelgue de /blog/ a la nueva sección o subdirectorio de /novedades/

Éstas son las redirecciones más comunes que puedes hacer en el archivo .htaccess. Hay maneras diferentes de hacerlas y puedes complicarlas aún más utilizando expresiones regulares.

Creación de url amigables.

Si tienes una web antigua o usas ciertos tipos de cms, se generarán urls con la terminación .php o .html. Aunque a efectos de seo, sigue siendo una url igual de válida, se hace raro verlo así. Aunque técnicamente también son redirecciones, lo comentamos aquí

Gracias al uso del archivo .htaccess lo podremos cambiar.

Quitar .php de una url.

Con éste código conseguirás que las urls acabas en .php se redirijan automáticamente a una url más limpia sin terminación .php.

RewriteEngine On                                                                                                      RewriteCond %{REQUEST_FILENAME} !-f                                                                    RewriteCond %{REQUEST_FILENAME} !-d                                                                  RewriteRule ^(.*)\.php$ /$1 [L,R=301]

Quitar .html de una url

Igual que en el caso anterior, copy, revisa y paste 🙂.

RewriteEngine On                                                                                                      RewriteCond %{REQUEST_FILENAME} !-f                                                                    RewriteCond %{REQUEST_FILENAME} !-d                                                                      RewriteRule ^(.*)\.html$ /$1 [L,R=301]

Bloquear bots e IP en .htaccess.

¿Tienes al anayitics lleno de bots? ¿algún competidor simpático te manda tráfico chungo para hacerte sufrir? ¿Sospechas de la popularidad de tu web en Pakistán?

No te preocupes, puedes bloquear tanto bots como diferentes Ip e incluso dominios en este archivo

Bloquear bots en .htaccess.

Para ello tendremos que identificar que user agent es el que nos está tocando las narices. Podemos identificarlo a través de la lectura de los logs del servidor.

Al igual que haríamos con el robots.txt, podemos bloquearlo. Únicamente tenemos que sustituir “useragentmalvado” por el user agent del bot.

RewriteEngine On                                                                                                        RewriteCond %{HTTP_USER_AGENT} ^.*Useragentmalvado.*$ [NC,OR]

Bloquear IP en .htaccess.

Es muy sencillo bloquear tanto una dirección específica como todo el tráfico de un dominio.

✅ Bloquear una única IP: solo tendremos que añadir Deny from y tener la IP

Deny from 111.111.111.1

Bloquear un dominio concreto:

Tenemos dos opciones. En primer lugar escribir el siguiente código sustituyendo la web que nos  molesta por el ejemplo.

RewriteEngine On                                                                                                      RewriteCond %{HTTP_REFERER} ^https?://([^.]+\.)*ejemplo\.com [NC]                      RewriteRule .* – [F]

La otra opción es muy similar al bloqueo de una ip única. En esta ocasión tendremos que añadir la máscara de la ip y añadir los datos del dominio.

Deny from 123.123.123.123/300.300.300.0

Como has podido ver, el .htaccess es un archivo muy útil que nos permite controlar la respuesta que debe dar el servidor, ya sea para redirigir o para bloquear.

Iremos actualizando este contenido con más casos en los que puedes necesitar editar este archivo.

Esperamos que te haya resultado útil.

👇 Sabemos que te interesa😃