18 de Octubre
PLAZAS LIMITADAS

Apache y htaccess para SEO

Directivas y comandos para mejorar el SEO con Apache

Apache y htaccess para SEO
Autor:
Carlos Sánchez
Temática:
Servidores
Fecha de publicación:
2023-10-30

Última revisión:
2023-11-07

Los servidores son de muchísima utilidad en el mundo del posicionamiento web. Y Apache es uno de los servidores webs más utilizados en el mundo, que destaca por su versatilidad y facil configuración.

Dentro del mundo del SEO es conocido por la característica que tiene de poder configurar un archivo llamado .htaccess que nos permite hacer cambios en el servidor modificando el archivo sin necesidad de reiniciar el servidor (En nginx si sería necesario, por ejemplo).

Una cosa que se debe tener en cuenta, es que se lee y procesa de arriba hacia abajo. Un ejemplo de qué quiere decir esto para tenerlo visual, es que si una misma URL tiene dos redirecciones (por una mala configuración), solo funcionará la que está más arriba, ya que es la que se lee primero y nunca dará tiempo a llegar a la otra.

Vocabulario de .htaccess (Apache)

En el archivo de .htaccess se usa el mismo lenguaje que en Apache. No obstante, utilizar el archivo de .htaccess puede acabar ralentizando la ejecución del servidor, ya que su ventaja es su debilidad. Como pueden hacerse cambios en el archivo y ejecutarse de forma inmediata, el servidor tiene que procesar lo que hay en el .htaccess con cada petición. Algo que no sería necesario en caso de emplearse el httpd.conf, es decir el archivo de la configuración de Apache, el cual sí que necesita de un reinicio o reseteo cada vez que se realiza algún cambio.

En esta cheatsheet de apache podrás ver los códigos más útiles para que los puedas implementar en tu servidor.

Todos los comandos aquí designados se deben usar con un conocimiento previo en Apache y Regex y trabajar antes en un entorno de pruebas para evitar errores importantes.

Variables

Elementos que pueden variar dependiendo del usuario o distintas cuestiones que nos pueden ser necesarios designar para distintas variables, aquí van los más útiles para SEO:

¿No lo estás entendiendo?
Si no tienes los conocimientos del Máster de SEO Técnico que dará comienzo el próximo octubre, puedes preguntar tus dudas de forma gratuita en mi Discord. ¡Accede a la comunidad!

Ifmodule

Seguro que alguna vez has visto en un archivo .htaccess códigos similares a: <IfModule mod_rewrite.c>; <IfModule mod_expires.c> y un largo etcétera.

El Ifmodule es un condicional que permite que el código de dentro sea leído sólo en el caso de que esté dicho módulo activo, en el caso de no estarlo, el código será ignorado, evitando de esta forma que rompa la web.

Rewrites

Los Rewrites, pertenecientes al popular módulo mod_rewrite.c son una herramienta muy potente para hacer todo tipo de reescrituras, que pueden ser:

Aunque se pueden aplicar más reglas dentro, hablaremos de las 3 principales:

RewriteEngine

Esta directiva es necesaria para activar las redirecciones, aunque solo es necesario ponerlo una vez en todo el documento .htaccess.

RewriteEngine On

RewriteCond

Como su nombre indica, es para seleccionar el condicional, para indicar qué elemento o variables queremos que sea redireccionado. Esto nos permite mucho juego, por ejemplo:

RewriteCond %{HTTPS} off

Ese RewriteCond seleccionaría toda URL que no tenga activado el https.

RewriteRule

Sería la regla a designar, es decir, qué hacemos con ese elemento que hemos seleccionado en el ReWriteCond. Siguiendo el ejemplo anterior, por ejemplo, podemos hacer que se redireccionen todas las versiones de la web que no tengan https a la versión que sí:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://master-testing.test/$1 [R=301,L,QSA]
</IfModule>

If

Permite meter ciertos tipos de condicionales usando los elementos designados arriba. Ejemplo:

<If "%{THE_REQUEST} =~ m# /sobre-mi#i">
</If>

Header

Permite meter mensajes dentro del header, los cual nos servirán para el x-robots, para el canonical, para el hreflang o incluso para poner mensajes personalizados:

<If "%{THE_REQUEST} =~ m# /sobre-mi#i">
Header set Link "<https://carlos.sanchezdonate.com>; rel='canonical'"
Header set X-Robots-Tag "noindex"
Header set X-Asdrubal "Pagina con el SEO revisado por Asdrubal SEO SL"
Header set Link "<https://carlos.sanchezdonate.com>; rel='alternate' hreflang='es', <https://carlos.sanchezdonate.com/en>; rel='alternate' hreflang='en'"
</If>

Se recomienda usar con el código de arriba (If "%{THE_REQUEST}, de lo contrario nos afectará en todas las páginas.

Files

Permite designar comandos para un archivo específico.

<Files readme.md>
order deny,allow
deny from all
allow from 192.168.0.1
</Files>

FilesmAtch

Tiene la misma utilidad que files pero permite la inserción de regex. Por ejemplo, podemos hacer que todos los archivos .pdf tengan que ser descargados por el usuario. Así aunque el usuario ignore el atributo download de HTML porque tiene el enlace, forzamos al usuario a que descargue el archivo.

<FilesMatch "\.pdf$">
Header set Content-Disposition "attachment"
</FilesMatch>

ErrorDocument

Te permite designar el HTML de un código de respuesta personalizado:

ErrorDocument 404 '<html value="aqui"><h1>Error 404 personalizado</h1><div>Prueba a ver la web de Carlos Sánchez SEO</div></html>'

Redirect

Sirve para redirigir páginas de forma simple. Está la opción de Redirect y RedirectMatch, RedirectMatch permite la inserción de regex, lo cual permite hacer redirecciones en bulk minimizando el posible fallo humano.

Expires

Estos comandos son pertenecientes al módulo mod_expires.c, y sirven para designar la caché del usuario.

Authn_file

Es un módulo para designar el acceso por contraseña en una web. Lo podemos configurar con el comando If para que solo afecte a nuestro entorno de desarrollo:

<If "%{HTTP_HOST} == 'master-testing.test'">
<IfModule mod_authn_file.c>
AuthUserFile C:\Users\****\*****\Github\master-testing\*******\.htpasswd
AuthName "Iniciar sesión requerido"
AuthType Basic
Require valid-user
</IfModule>
</If>

h2

Para poder configurar el http2 en apache y mejorar el WPO, debemos ir al httpd conf tenemos que tener activado el http2: LoadModule http2_module modules/mod_http2.so y poner en el <IfModule ssl_module>:

Protocols h2 http/1.1

Artículos útiles sobre apache

Bibliografía

Si te gusta este artículo, me ayudarías un montón compartiendo mi contenido:
No se te da mal el SEO Técnico

Te falta mi máster. Accede a una formación avanzada que te permitirá aplicar e implementar SEO en cualquier tipo de WEB

¡Accede al Máster de SEO Técnico!
Tal vez te interesen otros artículos:
Artículos de SEO
Usamos cookies para asegurar que te damos la mejor experiencia en nuestra web. Aquí tienes nuestra política de privacidad.