Apache y htaccess para SEO
Directivas y comandos para mejorar el SEO con Apache

- 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:
- HTTP_USER_AGENT: Representa la cadena del agente de usuario que está accediendo al servidor. Por ejemplo, el tipo de navegador o robot.
- REQUEST_URI: Es la URI que fue solicitada por el cliente. Por lo general, es la parte de la URL después del nombre del host.
- DOCUMENT_URI: Proporciona la URI final después de procesar las reescrituras o redirecciones.
- REQUEST_FILENAME: Ruta completa en el sistema de archivos al archivo solicitado.
- LAST_MODIFIED: La fecha y hora en que el recurso solicitado fue modificado por última vez.
- QUERY_STRING: Parte de la URI que sigue al signo de interrogación (?), que contiene los parámetros de la solicitud.
- THE_REQUEST: La línea de solicitud completa, tal como la ha recibido el servidor.
- REMOTE_ADDR: La dirección IP desde la que el usuario está viendo la página actual.
- REQUEST_STATUS: El estado de la solicitud, como el código de estado HTTP (por ejemplo, 200 para OK, 404 para no encontrado).
- TIME: El tiempo y fecha en formato numérico (YYYYMMDDHHmmss). Se puede segmentar en distintos times:
- TIME_YEAR: El año actual (2024).
- TIME_MON: El mes actual (01-12).
- TIME_DAY: El día del mes (01-31).
- TIME_HOUR: La hora actual (00-23).
- TIME_MIN: El minuto actual (00-59).
- TIME_SEC: El segundo actual (00-59).
- TIME_WDAY: El día de la semana (0-6, donde 0 es domingo).
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:
- Reescribir el código de respuesta para determinados user-agents.
- Cambiar la versión de URL de una web.
- Hacer redirecciones potentes.
- Redireccionar parámetros.
- Redireccionar caracteres especiales.
- Y muchas más.
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://carlossanchezdonate.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://carlossanchezdonate.com>; rel='alternate' hreflang='es', <https://carlossanchezdonate.com/en>; rel='alternate' hreflang='en'"
</If>
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
- Apache VS nginx
- Generar códigos de respuesta en Apache
- Ponencia sobre optimización SEO desde Apache
- Bloquear user-agents mediante el servidor
- Implementar el X-Robots tag
- Bloquear una web por contraseña desde el servidor
- Redirecciones de protocolo, www y barra slash en Apache
- Configurar caché
- Redireccionar de urls mayúsculas a minúsculas
- Redirecciones de caracteres especiales
- Redirecciones con parámetros en Apache
- Implemetación de hreflang por HTTP
- Limitar la calidad de las imágenes para Google
- Eliminar páginas en chino desde Apache
- Prevenir el cloaking
Bibliografía
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!