Banner

Ultima revisión 05/12/2012

Optimizar el .htaccess para hacer SEO

Como ya sabréis, el .htaccess también conocido como archivo de configuración distribuida, es un fichero especial, popularizado por el Servidor HTTP Apache que permite definir diferentes directivas de configuración para cada directorio (con sus respectivos subdirectorios) sin necesidad de editar el archivo de configuración principal de Apache.

El .htaccess permite, entre otras cosas, autorización, autenticación, creación de URLs "amigables", respuestas de error perosonalizadas, tipos MIME, controlar la caché, evitar hotlink y mucho más.

Si consultáis la documentación proporcionada por Google que comentabamos en el capítulo anterior, se dan varias recomendaciones que se pueden establecer con la configuración del .htaccess de forma rápida y sencilla. En este artículo sólo tocaremos las más utilizadas o populares y que deberían ser suficientes para ver una mejoria notable tanto en la velocidad de carga como en el posicionamiento SEO.

Hacer URL's amigables

Si queremos eliminar la extensión, por ejemplo, de los .php y ahorrar 4 caracteres en la dirección o, símplemente queremos que las páginas se indexen con o sin extensión, el siguiente código os lo resolverá.

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

La primera condición verifica que no sea un directorio. La siguiente condición verifica si un archivo con el mismo nombre con la extensión existe. Si existe entonces se realiza la regla de reescritura añadiendo .php al final del fichero. El flag L indica que es la última condición y el flag QSA para añadir el resto de los parametros pasados por GET de la URL.

Habilitar Keep Alive

Las conexiones KeepAlive són aquellas que se mantienen abiertas tras recibir una petición del cliente y servirla, de tal manera que la siguiente petición reaprovecha la conexión. Resultan útiles ya que no se tiene que abrir una conexión para cada elemento de la página (imagenes, CSS, JavaScripts…

<ifModule mod_headers.c>
Header set Connection keep-alive
</ifModule>

Especificar un validador de caché

La recomendación es poner 7 días.

<FilesMatch "\.(php|html|htm|txt|html5|jpg|png|js|css)$">
Header set Cache-Control "max-age=604800"
Header set last-modified "Tus May 15 13:00:00 EDT 2012" 
</FilesMatch>
# Deshabilitar parámetros siguientes
<FilesMatch "\.(pl|cgi|spl|html)$">
Header unset Cache-Control
Header unset Expires
Header unset Last-Modified
FileETag None
Header unset ETag
Header unset Pragma
</FilesMatch>

Habilitar compresión DEFLATE

Sirve para reducir el uso de ancho de banda por el servidor web y, al mismo tiempo, aumentar la velocidad de la entrega de contenido comprimiendo las páginas web.

AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml 
AddOutputFilterByType DEFLATE application/svg+xml

Habilitar compresión compresión HTTP del servidor del código html, js y css

Sirve para comprimir las páginas antes de enviarlas al cliente. Esta es la recomendación más frecuente.

# Activa la compresion en el servidor
php_flag zlib.output_compression On
# Indica el nivel de compresion de 1 a 9 (de menor a mayor compresion)
php_value zlib.output_compression_level 5
# Indica sobre que extensiones se aplica la compresion
AddHandler application/x-httpd-php .css

A veces ocurre que cuando en esta última instrucción AddHandler añadimos la extensión .js, algunos plugins de javaScript y jQuery dejan de funcionar. Por esta razón no he puesto la extensión .js ya que, además, los .js se comprimen ya con DEFLATE.