You are on page 1of 6

Crear uno de estos archivos es muy simple, podemos usar cualquier editor de texto y al salvarlo estar seguros de que

lleva por nombre, exactamente, .htaccess -claro est, sin las comillas-.

Evitar el listado del contenido de un directorio


Uno de los primeros indicadores que nos pueden alertar de una configuracin insegura de un servidor web es poner en la barra de direcciones del navegador una url que apunte a un directorio del servidor (http://www.dominio.es/images) y que el navegador nos muestre un listado de las carpetas y archivos que ah se alojan. Salvo que lo tengamos pensado as de manera expresa, deberamos evitar que este tipo de cosas sucedan puesto que estamos abriendo el contenido completo de nuestra web a terceros y, precisamente, para controlar este tipo de situaciones podemos usar las directivas DirectoryIndex u -Indexes para definir ndices que eviten listar el contenido de una carpeta.

Proteger archivos y carpetas importantes


Si pensamos un momento en WordPress, el archivo wp-config.php (que se encuentra en el raz) almacena la direccin de nuestra base de datos, la base de datos que usamos as como el usuario y la contrasea, una informacin de gran valor para un atacante externo. Para evitar el acceso a este tipo de archivos singulares podremos valernos de reglas como la siguiente para evitar que alguien acceda pueda acceder a nuestro archivo: <files wp-config.php> order allow,deny deny from all </files> Otro detalle a tener en cuenta es la proteccin de carpetas crticas a las que nadie, salvo un administrador, debera poder entrar. Y de qu tipo de carpetas estamos hablando? Si retomamos el ejemplo de WordPress, nadie debera poder entrar en la carpeta de los plugins o en la carpeta uploads y as evitar que alguien recopile ms informacin de la cuenta. Y qu podemos hacer en estos casos? Una buena forma, y elegante, de evitar el acceso es forzar una redireccin hacia nuestra pgina principal siguiendo esquemas como: Redirect 301 /wp-content/index.php http://www.tudominio.com/ Redirect 301 /wp-content/themes/index.html http://www.tudominio.com/

Crear pginas de error personalizadas


Ya todos sabemos que los servidores devuelven al cliente diferentes cdigos de error cuando algo no anda bien, por ejemplo: el famoso 404 para las pginas no encontradas, 403 para acceso denegado o el temido error 500 que indica un problema interno con el servidor. Con

.htaccess es posible redirigir a los visitantes hacia una pgina mucho ms amigable cuando uno de estos errores se presenta. Todo lo que debemos hacer es agregar el siguiente cdigo a nuestro fichero mgico. ErrorDocument 400 /error/400.html ErrorDocument 401 /error/401.html ErrorDocument 403 /error/403.html ErrorDocument 404 /error/404.html ErrorDocument 500 /error/500.html

Forzar la descarga de tipos de fichero especficos


Si en nuestro sitio web ofrecemos acceso a diferentes tipos de archivos como .mp3, .pdf, .xls, etc, podemos establecer una configuracin para que estos se descarguen de manera forzada en lugar de permitir al navegador elegir que hacer con ellos. El cdigo para realizar esto es el siguiente y solo debemos modificar la extensin del tipo de archivo que deseamos forzar. <Files *.mp3> ForceType application/octet-stream Header set Content-Disposition attachment </Files> <Files *.xls> ForceType application/octet-stream Header set Content-Disposition attachment </Files>

Prevenir el Hotlinking
En el artculo anterior aprendimos lo que significa Hotlinking (o Hotlink) y que es posible prevenirlo gracias a .htaccess. Con el siguiente cdigo evitaremos que otros consuman nuestro valioso ancho de banda. RewriteEngine On #Cambiamos ?mysite\.com/ con la url de nuestro sitio RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.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]

Utilizar el cache para aumentar la velocidad de nuestro sitio

Probablemente este sea uno de los cdigos ms valiosos de esta lista, ya que nos permitir acelerar de manera considerable la velocidad de carga de nuestro sitio utilizando el cache. Cada bloque de cdigo a continuacin sirve para definir los tipos de archivo que se almacenarn en cache y la cantidad de tiempo -en segundos- que permanecern all. <ifmodule mod_expires.c> ExpiresActive On ExpiresDefault A3600 <FilesMatch ".(gif|jpg|jpeg|png|swf)$"> # 2 weeks ExpiresDefault A604800 Header append Cache-Control "public" </FilesMatch> <FilesMatch ".(xml|txt|html)$"> # 2 hours ExpiresDefault A604800 Header append Cache-Control "public" </FilesMatch> <FilesMatch ".(js|css)$"> # 3 days ExpiresDefault A604800 Header append Cache-Control "public" </FilesMatch> </ifmodule>

Crear una lista negra de direcciones IP


Como bien explicaba nuestro compaero JJ, con .htaccess podemos combatir el SPAM de manera agresiva. Una forma de hacerlo es bloqueando las direcciones IP identificadas como fuente de comentarios basura. Copia y pega el siguiente cdigo en el fichero .htaccess de tu servidor y reemplaza las direcciones IP por las que deseas bloquear. <Limit GET POST PUT> order allow, deny allow from all deny from 123.123.123.1 deny from 555.555.555.5 deny from 000.000.000.0 </Limit>

Crear un registro de errores de PHP


Mientras desarrollabas tu sitio usando PHP o quiz navegando por red, es probable que te hayas encontrado con una pgina que imprima algn error de PHP como parte de la decoracin. Estos errores, adems de ser desagradables para el usuario comn, puede brindar informacin sensible que puede ser aprovechada por un visitante malintencionado. Para evitar que se impriman en pantalla y, por el contrario, se registren en una bitcora dentro del servidor podemos usar el cdigo a continuacin. # evitar que los errores se muestren al usuario php_flag display_startup_errors off php_flag display_errors off php_flag html_errors off # registrar errores en la btacora php_flag log_errors on php_value error_log /logs/php_error.log

Redireccionar dispositivos mviles


Si tu sitio no tiene un diseo sensible (responsive web design), quiz te resulte de gran utilidad redirigir el trfico hacia una versin especialmente preparada para dispositivos mviles. 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|lgc|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] #------------- La siguiente linea excluye al iPad de la lista RewriteCond %{HTTP_USER_AGENT} !^.*iPad.*$ #------------RewriteCond %{HTTP_USER_AGENT} !macintosh [NC] #*SEE NOTE BELOW

RewriteRule ^(.*)$ /m/ [L,R=302]

Soporte para vdeos en HTML5


Una de las principales caractersticas de HTML5, es la capacidad de reproducir vdeos sin la necesidad de usar plugins, y muchos estn aprovechando esta ventaja en sus sitios. Sin embargo, es posible que existan algunos problemas con ciertos formatos de vdeo a la hora de reproducirlos. Alguien que se enfrent a este inconveniente nos ofrece una solucin que utiliza .htacces. 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

Redirecciones 301
Si quieres realizar un cambio de dominio o redirigir el trfico de una o varias pginas de tu sitio sin ser penalizado por Google -y probablemente otros buscadores-, las redirecciones 301 son la mejor opcin. El cdigo .htacces para esto es el siguiente: Redirect 301 /d/file.html http://www.domainname.com/r/file.html

Proteger un archivo especfico


Los servidores almacenan diferentes archivos que guardan la configuracin para el funcionamiento del sitio, muchos de estos contienen nombres de usuarios, rutas a bases de datos y contraseas, informacin sensible que puede utilizar un usuario malintencionado para poner en jaque la integridad y seguridad de nuestro sitio. Para agregar una capa extra de seguridad y apartar estos archivos de los curiosos, podemos usar el siguiente mtodo para lanzar un cdigo de error 403. Suponiendo que queremos proteger el archivo wp-config.php de una instalacin de WordPress, el cdigo sera: <Files wp-config.php> order allow,deny deny from all </Files>

Proteger un directorio con contrasea


Con .htaccess tambin es posible proteger un archivo o directorio completo usando una contrasea. Los cdigos para ambos casos se muestran a continuacin: #Proteger un archivo con contrasea <files secure.php=""> AuthType Basic AuthName "Prompt" AuthUserFile /home/path/.htpasswd Require valid-user </files> #Proteger un directorio con contrasea resides AuthType basic AuthName "This directory is protected" AuthUserFile /home/path/.htpasswd AuthGroupFile /dev/null Require valid-user Debes prestar especial atencin al archivo .htpasswd ya que este almacena toda la informacin relacionada con la autenticacin de los usuarios.

Remover www de las URLs de tu sitio


Para convertir http://www.tusitio.com en http://tusitio.com, basta con agregar el siguiente cdigo a tu archivo .htaccess. #remover www de la URL RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.domain\.com$ [NC] RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301] Con esto llegamos al final de este pequeo, pero til e interesante recorrido por el mundo .htaccess. Las dudas y comentarios son siempre bienvenidos y esperamos poder brindar ayuda adicional a travs de esta va.

You might also like