10 snippets de .htaccess que harán las delicias de todo programador web

El fichero .htaccess de Apache es el corazón de tu servidor web y lleva el timón sobre cómo tu sitio web reaccionará a diferentes acciones realizadas por tus visitantes. Es por eso que he compilado 10 snippets para .htaccess alucinantes que mejorarán tu proyecto web de muchos maneras: redirecciones, rendimiento, facilidad de uso...

Todos los snippets que encuentres más abajo deben ser pegados en tu fichero .htaccess, que debe estar localizado en el directorio raíz de tu servidor Apache.

Atención. Realiza una copia de seguridad de tu archivo .htaccess antes de llevar a cabo algún cambio.

Poner una barra al final de la url

Muchos de mis clientes me han pedido que aparezca siempre la barra diagonal al final de todas sus URL. Parece ser que es muy bueno para el SEO. El siguiente snippet agregará siempre una barra diagonal en las URL de tu sitio web.

<IfModule mod_rewrite.c>
 RewriteCond %{REQUEST_URI} /+[^.]+$
 RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
</IfModule>

Prevenir el hotlinking

El hotlinking (el acto de enlazar y utilizar imágenes de otros sitios webs) es, desafortunadamente, un práctica común que puede afectar negativamente a tu ancho de banda. Es útil snippet redirigirá todas las imágenes enlazadas por webs de terceros a una imagen específica, definida en la línea 6

RewriteEngine On
#Replace ?mysite.com/ with your blog url
RewriteCond %{HTTP_REFERER} !^http://(.+.)?mysite.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
#Replace /images/nohotlink.jpg with your "don't hotlink" image url
RewriteRule .*.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]

Redireccionar dispositivos móviles

Si tu sitio web aún no cuenta con un diseño responsive aún, puede ser muy útil el redirigir a aquellos usuarios que te visiten desde un dispositivo móvil a una versión específica para móviles de tu sitio web

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/m/.*$
RewriteCond %{HTTP_ACCEPT} "text/vnd.wap.wml|application/vnd.wap.xhtml+xml" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "acs|alav|alca|amoi|audi|aste|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "dang|doco|eric|hipt|inno|ipaq|java|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT}  "maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|opwv" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "palm|pana|pant|pdxg|phil|play|pluc|port|prox|qtek|qwap|sage|sams|sany" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|w3cs|wap-|wapa|wapi" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "wapp|wapr|webc|winw|winw|xda|xda-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "up.browser|up.link|windowssce|iemobile|mini|mmp" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "symbian|midp|wap|phone|pocket|mobile|pda|psp" [NC]
#------------- The line below excludes the iPad
RewriteCond %{HTTP_USER_AGENT} !^.*iPad.*$
#-------------
RewriteCond %{HTTP_USER_AGENT} !macintosh [NC] #*SEE NOTE BELOW
RewriteRule ^(.*)$ /m/ [L,R=302]

Forzar la descarga de extensiones específicas

Imagina que por razones X necesitas forzar la descarga de una extensión en concreto, como pueden ser los MP3 o los XLS. Estos snippets prevendrán que el navegador del visitante pueda leer el archivo y forzará la descarga por defecto.

<Files *.xls>
  ForceType application/octet-stream
  Header set Content-Disposition attachment
</Files>
<Files *.eps>
  ForceType application/octet-stream
  Header set Content-Disposition attachment
</Files>

Embeber una fuente de una web externa en Firefox

Cuando embebemos una fuente, Firefox no nos permite embeberla desde un sitio web externo. Utilizando este snippet para .htaccess que puedes ver más abajo, puedes obviar esta limitación.

<FilesMatch ".(ttf|otf|eot|woff)$">
<IfModule mod_headers.c>    
    Header set Access-Control-Allow-Origin "http://yourdomain.com"
</IfModule>
</FilesMatch>

Incrementa la velocidad de tu web con este cacheo para .htaccess

Este es, probablemente, el snippet más útil de toda la lista. Utilizando este simple cacheo de .htaccess, puedes mejorar drásticamente la velocidad de tu sitio web. ¡Un snippet que siempre debes tener a mano en tu caja de herramientas!

# 1 AÑO
<FilesMatch ".(ico|pdf|flv)$">
Header set Cache-Control "max-age=29030400, public"
</FilesMatch>
# 1 SEMANA
<FilesMatch ".(jpg|jpeg|png|gif|swf)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
# 2 DIAS
<FilesMatch ".(xml|txt|css|js)$">
Header set Cache-Control "max-age=172800, proxy-revalidate"
</FilesMatch>
# 1 MIN
<FilesMatch ".(html|htm|php)$">
Header set Cache-Control "max-age=60, private, proxy-revalidate"
</FilesMatch>

Redirige diferentes formatos a un feed único

Hace años, existían diferentes formatos de feed como RSS, Atom o Rdf. En estos días, RSS es definitivamente el más utilizado. Este snippet te permite redirigir todos los formatos de feeds a un único feed. Este snippet puede ser utilizado tal cual también en WordPress

<IfModule mod_alias.c>
 RedirectMatch 301 /feed/(atom|rdf|rss|rss2)/?$ http://example.com/feed/
 RedirectMatch 301 /comments/feed/(atom|rdf|rss|rss2)/?$ http://example.com/comments/feed/
</IfModule>

Configura tu web para los vídeos de HTML5

HTML5 cuenta con un montón de emocionantes opciones para el mundo del desarrollo web. Entre sus interesantes características está la capacidad de reproducir vídeos sin necesidad de utilizar Flash. Sin embargo, tienes que configurar el servidor para que funcione correctamente con los últimos estándares de vídeo HTML5. Este snippet te ayudará definitivamente.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
AddType video/ogg .ogv
AddType video/ogg .ogg
AddType video/mp4 .mp4
AddType video/webm .webm
AddType application/x-shockwave-flash swf

Log de errores de PHP

En lugar de mostrar errores de PHP en tu sitio web (sobre todo para prevenir a los piratas) este snippet registrará en un archivo .log todos los errores, al mismo tiempo que los oculta a los visitantes.

# display no errs to user
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
# log to file
php_flag log_errors on
php_value error_log /location/to/php_error.log

Ejecuta PHP dentro de archivos de Javascript

A la hora de programar en JavaScript, puede ser muy útil utilizar PHP dentro de los archivos .js, por ejemplo, para recuperar datos de una base de datos. Aquí tienes un snippet que permite el uso de PHP dentro de archivos JS.

AddType application/x-httpd-php .js
AddHandler x-httpd-php5 .js

<FilesMatch ".(js|php)$">
SetHandler application/x-httpd-php
</FilesMatch>

COMPARTE ESTE ARTÍCULO

ENVIAR A UN AMIGO
COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN GOOGLE +
¡SÉ EL PRIMERO EN COMENTAR!
Conéctate o Regístrate para dejar tu comentario.