Directivas y comandos para mejorar el SEO con Apache
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.
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.
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:
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.
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:
Esta directiva es necesaria para activar las redirecciones, aunque solo es necesario ponerlo una vez en todo el documento .htaccess.
RewriteEngine On
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.
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>
Permite meter ciertos tipos de condicionales usando los elementos designados arriba. Ejemplo:
<If "%{THE_REQUEST} =~ m# /sobre-mi#i">
</If>
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>
Permite designar comandos para un archivo específico.
<Files readme.md>
order deny,allow
deny from all
allow from 192.168.0.1
</Files>
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>
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>'
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.
Estos comandos son pertenecientes al módulo mod_expires.c, y sirven para designar la caché del usuario.
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>
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
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!