Thursday, April 10, 2014

10 fragmentos de código de .htaccess útiles

Un archivo .htaccess (hypertext access), también conocido como archivo de configuración distribuida, es un archivo utilizado por los servidores Apache que permite modificar distintos aspectos del sitio web sin necesidad de editar el archivo de configuración principal de Apache.

A continuación 10 fragmentos de código de .htaccess compilados por catswhocode. Antes de comenzar a editar el archivo recuerda realizar un respaldo de tu archivo .htaccess original.

Agregar o remover www de la URL

Por motivos de SEO, quizás siempre necesitas remover o usar el prefijo www en tu URL. El siguiente fragmento de código remueve el www de tu url y redirigiéndolo a cualquier url con el prefijo www o a la versión sin www. Sólo modifica las líneas 2 y 3 con la url de tu sitio.

Remover www
RewriteEngine On
RewriteCond %{HTTP_HOST} !^tu-sitio.com$ [NC]
RewriteRule ^(.*)$ http://tu-sitio.com/$1 [L,R=301]

Agregar www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^tu-sitio.com [NC]
RewriteRule ^(.*)$ http://www.tu-sitio.com/$1 [L,R=301]

Fuente: http://css-tricks.com/snippets/htaccess/www-no-www/

Prevenir el hotlinking

Hotlinking es una mala práctica que consiste en usar imágenes en tu sitio web que se encuentran en otro sitio web. Cuando alguien hace hotlinking de alguna imagen en tu sitio, utiliza tu ancho de banda lo cual es un beneficio para ese alguien. Para prevenir esto sólo agrega el siguiente fragmento de código a tu .htaccess después de reemplazar las urls que vienen de ejemplo por tus url. Recuerda modificar la línea 3 con la url de tu sitio y la línea 6 con la ruta a la imagen que no tendrá hotlink.

RewriteEngine On
#reemplaza ?misitio\.com/ con la url de tu blog
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?misitio\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
#reemplaza /images/nohotlink.jpg con la ruta a la imagen que no tendra "hotlink"
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]

Redireccionar los feeds de WordPress a Feedburner

Feedburner es un servicio web que te permite saber cuántas personas han leído tu blog vía feeds. Si utilizas WordPress, lo que debes hacer es redirigir todos los feeds de WordPress (rss, atom, etc) a tu Feedburner. En el siguiente fragmento de código reemplaza las líneas 2 y 3 con los datos de tu feedburner, y después colócalo en tu archivo .htaccess.

 RedirectMatch 301 /feed/(atom|rdf|rss|rss2)/?$ http://feedburner.com/yourfeed/
 RedirectMatch 301 /comments/feed/(atom|rdf|rss|rss2)/?$ http://feedburner.com/yourfeed/

Si estás cansado de las mismas páginas de error viejas y aburridas de tu sitio web, puedes crear algunos archivos html con el diseño que desees, súbelas a tu servidor y añade lo siguiente a tu archivo .htaccess modificando la ruta a cada página personalizada:

ErrorDocument 400 /errors/badrequest.html
ErrorDocument 401 /errors/authreqd.html
ErrorDocument 403 /errors/forbid.html
ErrorDocument 404 /errors/notfound.html
ErrorDocument 500 /errors/serverr.html

Fuente: http://css-tricks.com/snippets/htaccess/custom-error-pages/

Forzar la descarga de archivos específicos

Cuando en tu sitio tienes archivos mp3s, eps, xls, etc. para ser descargados, se puede forzar a que se descarguen en vez de dejar que el navegador decida que hacer.

El siguiente fragmento de código forzará la descarga de archivos .xls y .eps (el * significa que coincida con cualquier nombre de archivo, seguido de la extensión del archivo) en la ruta indicada así como sus subdirectorios.

<files xls="">
  ForceType application/octet-stream
  Header set Content-Disposition attachment
</files>
</files eps="">
  ForceType application/octet-stream
  Header set Content-Disposition attachment
<files>

Fuente: http://www.givegoodweb.com/post/30/forcing-a-download-with-apache-and-htaccess

Crea un registro de errores PHP

El siguiente fragmento de código proporciona una manera de registrar errores de archivos PHP en un archivo de registro de errores y además previene mostrarle estos errores al usuario. Sólo crea un archivo php_error.log en tu servidor, modifica la línea número 7 del fragmento que es la ruta al archivo creado (php_error.log) y añadelo a tu archivo .htaccess.

# no muestra errores a usuarios
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
# registro a archivo
php_flag log_errors on
php_value error_log /ruta/a/php_error.log

Fuentehttp://css-tricks.com/snippets/htaccess/php-error-logging/

Retirar las extensiones de archivo de urls

Las extensiones de archivos pueden ser útiles para los desarrolladores, pero no hay necesidad de que los usuarios de tu sitio web las vean (además puede mejorar o acortar las url). El siguiente fragmento de código retira las extensiones .html de cualquier archivo html, pero puede ser fácilmente adaptado para retirar cualquier extensión.

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html
# reemplazaa html con otra extension, ej: eg: php, htm, asp

Si quieres agregar un diagonal ("/") al final de la url sin la extensión del archivo agrega el siguiente fragmento después del fragmento anterior.

# anade un diagonal al final
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]

Fuentehttp://eisabainyo.net/weblog/2007/08/19/removing-file-extension-via-htaccess/

Evitar listado de directorios

En tu sitio web cuando una carpeta no tiene un archivo "index", Apache automáticamente despliega un listado con todos los archivos en la carpeta accesada. Si lo que no quieres es que todos vean los archivos que están en tu servidor, solo añade la siguiente línea a tu archivo .htaccess.

Options -Indexes

Reducir peso de las páginas comprimiendo información estática

¿Sabías que es posible enviar información comprimida a los visitantes de tu sitio, y que será descomprimida por el cliente? Este fragmento de código te ahorrará (y a tus visitantes también) ancho de banda y reducirá el peso de las páginas.

AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html

Añadir automáticamente charset utf-8 a los archivos

Para prevenir problemas de codificación, puedes forzar a utilizar una codificación específica desde tu archivo .htaccess. De esta manera te asegurarás que tus archivos html se desplieguen con su charset correcto aunque olvides colocar la etiqueta <meta http-equiv="Content-Type"> directamente en tus archivos html.

<FilesMatch "\.(htm|html|css|js)$">
AddDefaultCharset UTF-8
</FilesMatch>

No comments :

Post a Comment