Optimizar tu sitio web con htaccess es muy importante a la hora de mejorar el posicionamiento SEO y para aumentar considerablemente el rendimiento o velocidad de tu página web.
Te mostraré algunas líneas de código que podrás agregar a tu archivo htaccess:
Uso de GZIP (Se deberá tener instalado el módulo de Gzip en tu servidor Apache)
Este código sirve para comprimir la información de tu página web para disminuir el consumo de ancho de banda y facilitar la rapidez en la carga de los archivos de tu web en el servidor, y por consiguiente disminuirá el tiempo de carga de la web.
<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_item_include file .html$
mod_gzip_item_include file .php$
mod_gzip_item_include file .css$
mod_gzip_item_include file .js$
mod_gzip_item_include mime ^application/javascript$
mod_gzip_item_include mime ^application/x-javascript$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include handler ^application/x-httpd-php
mod_gzip_item_exclude mime ^image/.*
</IfModule>
Uso de DEFLATE (Se deberá tener activado el módulo Deflate en tu servidor Apache)
Es otro código similar al anterior que permite comprimir la información de la web mediante el módulo Deflate del servidor Apache. Recomendamos esta opción antes que la de Gzip, debido a que Deflate es mucho mas compatible con versiones antiguas de navegadores y además es una compresión bastante rápida.
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/font
AddOutputFilterByType DEFLATE application/font-truetype
AddOutputFilterByType DEFLATE application/font-ttf
AddOutputFilterByType DEFLATE application/font-otf
AddOutputFilterByType DEFLATE application/font-opentype
AddOutputFilterByType DEFLATE application/font-woff
AddOutputFilterByType DEFLATE application/font-woff2
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/woff
AddOutputFilterByType DEFLATE font/woff2
</IfModule>
Especificar un valor de duración de la Caché
La caché de la web nos permite salvar copias de los datos de respuesta que un servidor manda a un cliente cada vez que se conecta a la página web por primera vez, por lo que la siguiente vez que se conecte, los datos serán extraídos de la caché guardada y así no tendrá que solicitarlos al servidor cada vez que se conecte a la web. Esto se traduce en mayor velocidad de carga de la web las sucesivas veces que el cliente se conecte.
## BEGIN EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive on
# Perhaps better to whitelist expires rules? Perhaps.
ExpiresDefault "access plus 1 year"
# cache.appcache needs re-requests in FF 3.6 (thanks Remy ~Introducing HTML5)
ExpiresByType text/cache-manifest "access plus 0 seconds"
# Your document html
ExpiresByType text/html "access plus 0 seconds"
# Data
ExpiresByType text/xml "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType application/json "access plus 0 seconds"
# Feed
ExpiresByType application/rss+xml "access plus 1 hour"
ExpiresByType application/atom+xml "access plus 1 hour"
# Favicon (cannot be renamed)
ExpiresByType image/x-icon "access plus 1 week"
# Media: images, video, audio
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
ExpiresByType audio/ogg "access plus 1 year"
ExpiresByType video/ogg "access plus 1 year"
ExpiresByType video/mp4 "access plus 1 year"
ExpiresByType video/webm "access plus 1 year"
# HTC files (css3pie)
ExpiresByType text/x-component "access plus 1 year"
# Webfonts
ExpiresByType application/font-ttf "access plus 1 year"
ExpiresByType font/* "access plus 1 year"
ExpiresByType application/font-woff "access plus 1 year"
ExpiresByType application/font-woff2 "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
ExpiresByType application/vnd.ms-fontobject "access plus 1 year"
# CSS and JavaScript
ExpiresByType text/css "access plus 1 year"
ExpiresByType type/javascript "access plus 1 year"
ExpiresByType application/javascript "access plus 1 year"
<IfModule mod_headers.c>
Header append Cache-Control "public"
<FilesMatch ".(js|css|xml|gz|html)$">
Header append Vary: Accept-Encoding
</FilesMatch>
</IfModule>
</IfModule>
El dato “max-age” está expresado en segundos, por lo que en este ejemplo la caché está fijada a 7 días, que son los días durante los que se guardará la información de la web para mostrarla al cliente cada vez que se conecte. Se puede configurar la caché para que dure más o menos días, dependiendo de lo que quiera cada uno.
Prevenir el Hotlinking
Este código es ideal para impedir que otras webs muestren imágenes de tu web desde tu propio servidor. Esto ocurre cuando utilizan la misma url de tu imagen alojada en tu servidor para poder mostrarla en otra web sin que previamente la hayan guardado en su servidor. Lo que provoca que te vayan consumiendo ancho de banda de tu servidor de manera totalmente desconsiderada e ilegal. Cada vez que un usuario visita la página web donde aparecen las imágenes de tu web, se está realizando solicitudes al servidor donde está alojada la imagen, que en este caso sería tu servidor.
Para prevenir estos casos, hay una solución que lo que hace es mostrar una imagen en el lugar de las imágenes “robadas” desde tu servidor. Por lo que se recomienda que esa imagen sea una especie de aviso que diga por ejemplo “Imagen propiedad de xxxxx” o alguna otra advertencia que cause molestias a quien está robando ancho de banda de tu servidor, a la vez de que avisa a los que ven esa advertencia que desde esa página web se están robando imágenes que no pertenecen a ese servidor web.
RewriteEngine On
#Cambiamos ?tusitioweb\.com/ con la url de nuestro sitio
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?tusitioweb\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
#Cambiamos /images/nohotlink.jpg con una imagen que indique que no toleramos los hotlinks
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]