{"id":241,"date":"2013-12-23T23:16:01","date_gmt":"2013-12-23T23:16:01","guid":{"rendered":"http:\/\/rediles.com\/softwarelibre\/?p=241"},"modified":"2013-12-23T23:23:45","modified_gmt":"2013-12-23T23:23:45","slug":"manual-de-bolsillo-de-htaccess","status":"publish","type":"post","link":"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/","title":{"rendered":"Manual de bolsillo de .htaccess"},"content":{"rendered":"<p>En un articulo anterior comentamos un poco por encima lo que es el <a title=\"Servidor LAMP : Linux - Apache - MySQL - PHP\" href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/el-software-libre-no-es-cosa-de-hippyes\/\">servidor web Apache<\/a>.<\/p>\n<p>En esta ocasi\u00f3n quer\u00eda hablar sobre una herramienta de configuraci\u00f3n muy potente para el servidor Apache: los archivos <strong>.htaccess<\/strong> para la configuraci\u00f3n de directorios, y para ello nada mejor que un peque\u00f1o tutorial para hacerse una ligera idea de sus posibilidades (un manual completo ser\u00eda muy extenso).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" alt=\"\" src=\"http:\/\/www.diezcuriosidades.com\/wp-content\/uploads\/2012\/09\/apache_htaccess.png\" width=\"320\" height=\"220\" \/><\/p>\n<h3>Notas de traducci\u00f3n<\/h3>\n<ul>\n<li>Esta traducci\u00f3n fue realizada bajo <strong>permiso expreso y por escrito \u2013 en e-mail \u2013 del autor<\/strong>: Paolo Tagliaferri (que le manda saludos a Pampita)<\/li>\n<li>Tanto el art\u00edculo original como su traducci\u00f3n se encuentra bajo licencia <a href=\"http:\/\/creativecommons.org\/licenses\/by-nc-nd\/2.0\/it\/deed.es_AR\" target=\"_blank\">Creative Commons Atribuci\u00f3n-NoComercial-SinDerivadas<\/a><\/li>\n<li>Los v\u00ednculos fueron mantenidos as\u00ed que \u00e9stos seguramente se encontrar\u00e1 en ingl\u00e9s<\/li>\n<li><strong>Art\u00edculo Original<\/strong>: <a href=\"http:\/\/www.vortexmind.net\/index.php\/2006-02-26-apache-htaccess-tweaking-tutorial\/\" target=\"_blank\">Apache .htaccess tweaking tutorial<\/a><\/li>\n<\/ul>\n<p>Si a alguien se le ocurre algo para agregar\/modificar\/corregir al tutorial s\u00f3lo deje un comentario y vemos c\u00f3mo hacemos.<\/p>\n<h3>La traducci\u00f3n<\/h3>\n<blockquote><p>En este tutorial mejoraremos nuestro sitio web modificando el archivo .htaccess.\u00bfPor qu\u00e9 escrib\u00ed este art\u00edculo? Porque en la red encontr\u00e9 un mont\u00f3n de art\u00edculos sobre esta peque\u00f1a bestia pero cada uno de ellos englobaba un problema en particular y no el uso general del archivo, o eran demasiado grandes cuando uno necesitaba algo en poco tiempo. Por lo que estoy intentando recopilar todas los datos \u00fatiles en un tutorial sencillo pero monol\u00edtico, que ser\u00e1 actualizado a medida que consiga m\u00e1s informaci\u00f3n. Primero sin embargo, veamos qu\u00e9 es un archivo .htaccess.<\/p>\n<p>Esto es lo que dice la <a href=\"http:\/\/en.wikipedia.org\/wiki\/Htaccess\" target=\"_blank\">definici\u00f3n de la wikipedia<\/a> [en ingl\u00e9s]:<\/p>\n<blockquote><p><strong>.htaccess<\/strong> (Acceso de Hiper-Texto) es el nombre por defecto del archivo de configuraci\u00f3n de directorios de Apache. Provee de la habilidad para <strong>personalizar la configuraci\u00f3n de las directivas<\/strong> definidas en el archivo de configuraci\u00f3n principal. Las directivas de configuraci\u00f3n necesitan estar en el contexto de .htaccess y el usuario necesita los permisos apropiados.<\/p><\/blockquote>\n<p>Ahora veamos los problemas m\u00e1s comunes.<\/p>\n<h4><a name=\"Indice\"><\/a>\u00cdndice (\u00daltima actualizaci\u00f3n: 28 de Febrero de 2006)<\/h4>\n<ol>\n<li><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/#1\">Control de acceso a carpetas<\/a><\/li>\n<li><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/#2\">Listado de carpetas<\/a><\/li>\n<li><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/#3\">Activaci\u00f3n de compresi\u00f3n<\/a><\/li>\n<li><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/#4\">Escondiendo archivos<\/a><\/li>\n<li><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/#5\">P\u00e1ginas de error HTTP 404 personalizadas<\/a><\/li>\n<li><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/#6\">Bloqueo de referers maliciosos \u2013 Nada de hotlinking<\/a><\/li>\n<li><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/#7\">Bloqueo de robots maliciosos<\/a><\/li>\n<li><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/#8\">No mostrar \u2018wwww\u2019<\/a><\/li>\n<li><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/#9\">Escondiendo la extensi\u00f3n del lenguaje de scripting<\/a><\/li>\n<li><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/#10\">Consejos y trucos varios<\/a><\/li>\n<li><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/#11\">Protecci\u00f3n con contrase\u00f1a mediante htpasswd<\/a><\/li>\n<li><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/#12\">Activando SSI<\/a><\/li>\n<li><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/#13\">Cambiando la p\u00e1gina por defecto<\/a><\/li>\n<li><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/#14\">Evitando el error 500<\/a><\/li>\n<li><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/#15\">Directiva CheckSpelling [Control de Ortograf\u00eda]<\/a><\/li>\n<li><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/#16\">Agregar sumario MD5<\/a><\/li>\n<li><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/#17\">Fuentes<\/a><\/li>\n<li><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/#18\">Herramientas<\/a><\/li>\n<\/ol>\n<h4><a name=\"1\"><\/a>Control de acceso a carpetas<\/h4>\n<p>Podr\u00edas querer <strong>deshabilitar totalmente el acceso a una carpeta<\/strong> (por ejemplo, una carpeta con librer\u00edas de programaci\u00f3n que se incluyen en los archivos principales. En este caso s\u00f3lo los archivos principales acceder\u00e1na ellos mediante el sistema de archivos, pero no se podr\u00e1n acceder via web). Bueno, simplemente crea un archivo .htaccess en esa carpeta que contenga:<\/p>\n<p><code>#deny all access<br \/>\ndeny from all<\/code><\/p>\n<p>Si se quiere permitir el acceso desde una IP espec\u00edfica<\/p>\n<p><code>#deny all access<br \/>\ndeny from all<br \/>\nallow from 10.0.0.1<\/code><\/p>\n<p>o para un rango espec\u00edfico de IPs (forzado mediante la m\u00e1scara de red)<\/p>\n<p><code>allow from 192.168.0.0\/24<\/code><\/p>\n<p>tambi\u00e9n se puede bloquear el acceso a un archivo espec\u00edfico<\/p>\n<p><code>&lt;Files privado.html&gt;<br \/>\nOrder allow,deny<br \/>\nDeny from all<br \/>\n<\/code><\/p>\n<p><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/Indice\">Volver al \u00edndice<\/a><\/p>\n<h4><a name=\"2\"><\/a>Listado de carpetas<\/h4>\n<p>Si se quiere hacer las carpetas navegables, entonces necesitamos agregar esta l\u00ednea al archivo .htaccess<\/p>\n<p><code>Options +Indexes +MultiViews +FollowSymlinks<\/code><\/p>\n<p>Y esta si se tiene el m\u00f3dulo apropiado en el servidor web<\/p>\n<p><code><br \/>\nIndexOptions FancyIndexing<br \/>\n<\/code><\/p>\n<p>Tambi\u00e9n se podr\u00eda querer prevenir el listado de carpetas<\/p>\n<p><code>IndexIgnore *<\/code><\/p>\n<p><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/Indice\">Volver al \u00edndice<\/a><\/p>\n<h4><a name=\"3\"><\/a>Activar compresi\u00f3n<\/h4>\n<p>Se puede habilitar la compresi\u00f3n de datos inherente de PHP para ahorrar ancho de banda<\/p>\n<p><code><br \/>\nphp_value zlib.output_compression 16386<br \/>\n<\/code><\/p>\n<p><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/Indice\">Volver al \u00edndice<\/a><\/p>\n<h4><a name=\"4\"><\/a>Escondiendo archivos<\/h4>\n<p>Para deshabilitar el acceso a un archivo en particula se puede utilizar una expresi\u00f3n regular y la directiva <strong>Files <\/strong>para denegar acceso a cualquier archivo que comience con .ht<\/p>\n<p>Se puede modificar esto para restringir un archivo en particular (como archivos de configuraci\u00f3n, robots.txt, archivos de logs o lo que se desee).<\/p>\n<p><code><br \/>\nOrder allow,deny<br \/>\nDeny from all<br \/>\nSatisfy All<br \/>\n<\/code><\/p>\n<p><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/Indice\">Volver al \u00edndice<\/a><\/p>\n<h4><a name=\"5\"><\/a>P\u00e1ginas de error HTTP 404 personalizadas<\/h4>\n<p>Si se quisiera redireccionar los visitantes cada vez que se encuentran con una p\u00e1gina de error HTTP 404, utiliza \u00e9ste c\u00f3digo:<\/p>\n<p><code>ErrorDocument 404 \/errores\/noencontrado.html<\/code><\/p>\n<p>Esto redirije el usuario hacia \/errores\/noencontrado.html cada vez que sucede un error 404. Obviamente, se puede redefinir para que capture otros errores http (403, 5000, etc). Sigue leyendo para ver lo que encontr\u00e9<\/p>\n<blockquote><p><strong>Consejo<\/strong>: Internet Explorer tiene una \u201cfuncionalidad\u201d poco documentada que previene la utilizaci\u00f3n de cualquier p\u00e1gina de error 404 personalizada que sea menor a 512 bytes de largo. Los visitantes ser\u00e1n enviados, en cambio, a la p\u00e1gina propia de IE, que es gen\u00e9rica y sugiere que utilizen una b\u00fasqueda en MSN para buscar la informaci\u00f3n en internet. \u00a1Esa es una forma de perder visitantes! Aseg\u00farate que tu p\u00e1gina personalizada est\u00e9 por sobre este l\u00edmite \u2013 algo as\u00ed como 10 l\u00edneas completas de texto y HTML deber\u00edan ser suficientes.<\/p><\/blockquote>\n<p><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/Indice\">Volver al \u00edndice<\/a><\/p>\n<h4><a name=\"6\"><\/a>Bloqueo de referers maliciosos \u2013 Nada de hotlinking<\/h4>\n<p>Si se desea bloquera algunas partes del sitio de cualquier referer malicioso:<\/p>\n<p><code><br \/>\nRewriteEngine on<br \/>\nRewriteCond %{HTTP_REFERER} ejemplo\\.com [NC,OR]<br \/>\nRewriteCond %{HTTP_REFERER} otroejemplo\\.com<br \/>\nRewriteRule .* - [F]<br \/>\n<\/code><\/p>\n<p>Utilizando el motor rewrite [de reescritura] se denegar\u00e1 el acceso al sitio a cualquier visitante que venga de chicomalo.com u otrositiodesagradable.com. Para evitar el robo de ancho de banda, se puede bloquear el acceso a un archivo en particular (o extensi\u00f3n de archivos).<\/p>\n<p><code><br \/>\nRewriteEngine on<br \/>\nRewriteCond %{HTTP_REFERER} !^$<br \/>\nRewriteCond %{HTTP_REFERER} !^http:\/\/([-a-z0-9]+\\.)?example\\.com[NC]<br \/>\nRewriteRule .*\\.(zip|mp3|avi|wmv|mpg|mpeg)$ http:\/\/www.example.com\/images\/nohotlink.gif [R,NC,L]<br \/>\n<\/code><\/p>\n<p>Esto dice: \u201csi el visitante no proviene de misitio.net, entonce redirije todos los pedidos de archivos (zip,mp3,avi,wmv,mpg,mpeg) a una imagen que dice \u201cNo permitimos hotlinking\u201d De esa forma, puedes redirigir a una p\u00e1gina, o lo que desees, o p uedes modificar la lista de extens\u00edones de archivo para incluir\/quitar otros archivos. <strong>Cuidado<\/strong>: cuando se decide bloquera el hotlinking de im\u00e1genes recuerda que puedes estar bloqueando <strong>todo<\/strong> tr\u00e1fico fuera del alcance de tu dominio. Por ejemplo, si se posee un archivo de sindicaci\u00f3n tomado por bloglines necesitar\u00e1s modificar la regla para permitirles a los lectores obtener las im\u00e1genes \u2013 o el RSS se ver\u00e1 mal.<\/p>\n<p><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/Indice\">Volver al \u00edndice<\/a><\/p>\n<h4><a name=\"7\"><\/a>Bloqueo de robots maliciosos<\/h4>\n<p>En algunos casos se querr\u00e1 bloquear algunos robots maliciosos, como spiders o descargadores. Para ello utilizaremos mod_rewrite nuevamente. Normalmente los robots maliciosos ignoran el archivo de directivas robots.txt por lo que se podr\u00eda querer forzar un error 403 cada vez que quieran recorrer o descargar tu sitio:<\/p>\n<p><code><br \/>\nRewriteEngine On<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^Bot\\ mailto:craftbot@yahoo.com [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^Custo [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^DISCo [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^Download\\ Demon [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^eCatch [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^EirGrabber [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^Express\\ WebPictures [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^FlashGet [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^GetRight [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^GetWeb! [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^GrabNet [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^Grafula [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^HMView [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} HTTrack [NC,OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^Image\\ Stripper [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^Image\\ Sucker [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} Indy\\ Library [NC,OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^InterGET [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^Internet\\ Ninja [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^JetCar [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^JOC\\ Web\\ Spider [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^larbin [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^LeechFTP [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^Mass\\ Downloader [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^MIDown\\ tool [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^Mister\\ PiX [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^Navroad [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^NearSite [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^NetAnts [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^NetSpider [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^Net\\ Vampire [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^NetZIP [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^Octopus [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^Offline\\ Explorer [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^Offline\\ Navigator [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^PageGrabber [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^Papa\\ Foto [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^pavuk [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^pcBrowser [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^RealDownload [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^ReGet [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^SmartDownload [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^SuperBot [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^Surfbot [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^tAkeOut [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^Teleport\\ Pro [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^VoidEYE [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^Web\\ Image\\ Collector [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^Web\\ Sucker [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^WebAuto [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^WebCopier [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^WebFetch [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^WebGo\\ IS [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^WebLeacher [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^WebReaper [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^WebSauger [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^Website\\ eXtractor [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^Website\\ Quester [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^WebStripper [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^WebWhacker [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^WebZIP [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^Wget [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^Widow [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^Xaldon\\ WebSpider [OR]<br \/>\nRewriteCond %{HTTP_USER_AGENT} ^Zeus<br \/>\nRewriteRule .* - [F]<br \/>\n<\/code><\/p>\n<p>(La lista se obtuvo de aqu\u00ed)<\/p>\n<p><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/Indice\">Volver al \u00edndice<\/a><\/p>\n<h4><a name=\"8\"><\/a>No mostrar \u2018wwww\u2019<\/h4>\n<p>Para hacer esto, basta con una simple regla de re-escritura:<\/p>\n<p><code><br \/>\nOptions +FollowSymlinks<br \/>\nRewriteEngine on<br \/>\nRewriteCond %{http_host} ^www\\.example\\.com[nc]<br \/>\nRewriteRule ^(.*)$ http:\/\/example.com\/$1 [r=301,nc]<br \/>\n<\/code><\/p>\n<p><a href=\"http:\/\/no-www.org\/\" target=\"_blank\">\u00bfPor qu\u00e9 querr\u00eda quitar \u2018www\u2019?<\/a> En ese link los fundamentos<\/p>\n<p><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/Indice\">Volver al \u00edndice<\/a><\/p>\n<h4><a name=\"9\"><\/a>Escondiendo la extensi\u00f3n del lenguaje de scripting<\/h4>\n<p>Se puede aumentar la seguridad cambiando la extensi\u00f3n de los scripts para que los visitantes desconozcan qu\u00e9 lenguaje est\u00e1s utilizando:<\/p>\n<p><code># Make PHP code look like unknown types<br \/>\nAddType application\/x-httpd-php .cool<\/code><\/p>\n<p>De esta forma, los archivos .cool ser\u00e1n tratados como si fuesen archivos PHP. Se deben renombrar los archivos que se quiera con esta nueva extensi\u00f3n.<\/p>\n<p><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/Indice\">Volver al \u00edndice<\/a><\/p>\n<h4><a name=\"10\"><\/a>Consejos y trucos varios<\/h4>\n<ul>\n<li>Mantiene el archivo <strong>.htaccess<\/strong> peque\u00f1o: este archivo es procesado por el servidor web en cada pedido (pudiendo causar problemas de performance).<\/li>\n<li>Mantiene tu archivo <strong>.htaccess<\/strong> organizado. Utiliza comentarios (l\u00edneas que comienzan en #) y se l\u00f3gicamente consistente. Es complicado entender un archivo <strong>.htaccess<\/strong> desorganizado una vez que crece lo suficiente.<\/li>\n<li>Cuando se utilicen reglas de reescritura de URLs, agrega la opci\u00f3n [L] a aquellas p\u00e1ginas finales (como la de hotlinking y dem\u00e1s). Esto le dir\u00e1 al servidor que no procese m\u00e1s reglas (aumentando la performance).<\/li>\n<li>Cuidado con la herencia: el archivo <strong>.htaccess<\/strong> a nivel ra\u00edz es aplicado tambi\u00e9n en las carpetas, cuaquier regla .htaccess en la carpeta puede reemplazar las reglas de la carpeta ra\u00edz.<\/li>\n<\/ul>\n<p><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/Indice\">Volver al \u00edndice<\/a><\/p>\n<h4><a name=\"11\"><\/a>Protecci\u00f3n con contrase\u00f1a mediante <strong>.htpasswd<\/strong><\/h4>\n<p>Esto es \u00fatil cuando se quiere agregar una contrase\u00f1a a ciertas p\u00e1ginas y\/o archivos<\/p>\n<ul>\n<li>Crea un archivo <strong>.htpasswd<\/strong> en la carpeta a protejer.<\/li>\n<li>El archivo contendr\u00e1 la informaci\u00f3n de registro de la forma <strong>usuario:contrase\u00f1a<\/strong>. El nombre de usuario es en texto plano. La contrase\u00f1a debe de estar encriptada o no funcionar\u00e1. Utiliza <a href=\"http:\/\/www.htmlite.com\/HTA006a.php\" target=\"_blank\">esta herramienta<\/a> para saber qu\u00e9 texto agregar.<\/li>\n<li>Si se crea el archivo en la PC local, acu\u00e9rdate de subirlo al servidor en <strong>modo ASCII<\/strong>.<\/li>\n<li>Normalmente, se puede modificar el archivo <strong>.htaccess<\/strong>. La autenticaci\u00f3n se aplicar\u00e1 a la carpeta en la que se encuentre y las subcarpetas.<code>AuthUserFile \/home\/pathto\/.htpasswd<br \/>\nAuthType Basic<br \/>\nAuthName \"Mi Carpeta Secreta\"<\/code><code> require valid-user <\/code>Se puede protejer un s\u00f3lo archivo incluyendo este c\u00f3digo dentro de una directiva<\/li>\n<li>Aseg\u00farate de protejer el acceso al archivo .htaccess utilizando el primer consejo.<\/li>\n<\/ul>\n<p><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/Indice\">Volver al \u00edndice<\/a><\/p>\n<h4><a name=\"12\"><\/a>Activando SSI<\/h4>\n<p>Utiliza \u00e9stas instrucciones para activar la interpretaci\u00f3n SSI<\/p>\n<p><code>AddType text\/html .html<br \/>\nAddType text\/html .shtml<br \/>\nAddHandler server-parsed .html<br \/>\nAddHandler server-parsed .shtml<\/code><\/p>\n<p><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/Indice\">Volver al \u00edndice<\/a><\/p>\n<h4><a name=\"13\"><\/a>Cambiando la p\u00e1gina por defecto<\/h4>\n<p>Se puede utilizar esta instrucci\u00f3n para cambiar la p\u00e1gina por defecto (el orden es importante)<\/p>\n<p><code>DirectoryIndex inicio.html index.htm index.html index.php<\/code><\/p>\n<p><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/Indice\">Volver al \u00edndice<\/a><\/p>\n<h4><a name=\"14\"><\/a>Evitando el error 500<\/h4>\n<p>Pasando el juego de caracteres se evita el mostrar un error 500<\/p>\n<p><code>AddDefaultCharset utf-8<\/code><\/p>\n<p><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/Indice\">Volver al \u00edndice<\/a><\/p>\n<h4><a name=\"15\"><\/a>Directiva CheckSpelling [Control de Ortograf\u00eda]<\/h4>\n<p>Esta directiva puede ser \u00fatil para auto-corregir errores de ortograf\u00eda simple en la URL<\/p>\n<p><code><br \/>\nCheckSpelling On<br \/>\n<\/code><\/p>\n<p><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/Indice\">Volver al \u00edndice<\/a><\/p>\n<h4><a name=\"16\"><\/a>Agregar sumario MD5<\/h4>\n<p>Si no se est\u00e1 preocupado por problemas de performance, se peude agregar un c\u00e1lculo de llave MD5 para agregar un <strong>MIC<\/strong> [Control de Integridad de Mensaje en ingl\u00e9s] en cada pedido. Esto es \u00fatil para controlar la integridad del mensaje.<\/p>\n<p><code>ContentDigest On<\/code><\/p>\n<p><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/Indice\">Volver al \u00edndice<\/a><\/p>\n<h4><a name=\"17\"><\/a>Fuentes<\/h4>\n<ul>\n<li><a href=\"http:\/\/corz.org\/serv\/tricks\/htaccess.php\" target=\"_blank\">http:\/\/corz.org\/serv\/tricks\/htaccess.php<\/a><\/li>\n<li><a href=\"http:\/\/underscorebleach.net\/jotsheet\/2004\/06\/htaccess-prevent-hotlinking\" target=\"_blank\">http:\/\/underscorebleach.net\/jotsheet\/2004\/06\/htaccess-prevent-hotlinking<\/a><\/li>\n<li><a href=\"http:\/\/brainstormsandraves.com\/archives\/2005\/10\/09\/htaccess\/\" target=\"_blank\">http:\/\/brainstormsandraves.com\/archives\/2005\/10\/09\/htaccess\/<\/a><\/li>\n<li><a href=\"http:\/\/www.usphp.com\/security.hiding.html\" target=\"_blank\">http:\/\/www.usphp.com\/security.hiding.html<\/a><\/li>\n<\/ul>\n<p><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/Indice&quot;\">Volver al \u00edndice<\/a><\/p>\n<h4><a name=\"18\"><\/a>Herramientas<\/h4>\n<ul>\n<li>Generador de contrase\u00f1as .htaccess<\/li>\n<\/ul>\n<p><a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/Indice\">Volver al \u00edndice<\/a><\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>En un articulo anterior comentamos un poco por encima lo que es el servidor web Apache. En esta ocasi\u00f3n quer\u00eda hablar sobre una herramienta de configuraci\u00f3n muy potente para el servidor Apache: los archivos .htaccess para la configuraci\u00f3n de directorios, &hellip; <a href=\"http:\/\/rediles.com\/softwarelibre\/2013\/12\/23\/manual-de-bolsillo-de-htaccess\/\">Sigue leyendo <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[1],"tags":[],"class_list":["post-241","post","type-post","status-publish","format-standard","hentry","category-sin-categoria"],"_links":{"self":[{"href":"http:\/\/rediles.com\/softwarelibre\/wp-json\/wp\/v2\/posts\/241","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/rediles.com\/softwarelibre\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/rediles.com\/softwarelibre\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/rediles.com\/softwarelibre\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/rediles.com\/softwarelibre\/wp-json\/wp\/v2\/comments?post=241"}],"version-history":[{"count":3,"href":"http:\/\/rediles.com\/softwarelibre\/wp-json\/wp\/v2\/posts\/241\/revisions"}],"predecessor-version":[{"id":244,"href":"http:\/\/rediles.com\/softwarelibre\/wp-json\/wp\/v2\/posts\/241\/revisions\/244"}],"wp:attachment":[{"href":"http:\/\/rediles.com\/softwarelibre\/wp-json\/wp\/v2\/media?parent=241"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/rediles.com\/softwarelibre\/wp-json\/wp\/v2\/categories?post=241"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/rediles.com\/softwarelibre\/wp-json\/wp\/v2\/tags?post=241"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}