.htaccess al detalle
¿Qué es .htaccess?
.htaccess es el nombre del archivo de configuración de directorios Apache por defecto. Se usa para crear directivas y parámetros en la configuración principal de un alojamiento web.
¿Cómo se crea y donde se situa el .htaccess?
Su creación es sencilla, se puede realizar desde el blog de notas guardando el fichero como un .txt y luego, una vez subido al alojamiento se renombra por .htaccess.
La ubicación del archivo es en interior de la carpeta donde queremos que tenga efecto. Como en muchos lenguajes de programación, puede ser muy importante comentar partes del código; aquí podemos comentar una línea escribiendo # al inicio de la línea; es decir:
#esto es un comentario
Veamos ahora algunas de sus aplicaciones comunes.
¿Cómo controlar el acceso a ciertas carpetas?
Con .htaccess podemos limitar el acceso a ciertas carpetas al navegar de este modo:
deny from all
Si quisiésemos, por ejemplo, que desde cierta IP se pueda acceder a esa carpeta bastaría con agregar esta línea a lo anterior
allow from 83.125.98.254
Sí se quisiera que el acceso fuese desde un rango de Ip el código sería el siguiente
Allow from 192.168.1.0/254
¿Cómo bloquear el acceso a un fichero?
<files nombre-del-archivo.html>
order allow,deny
deny from all
¿Cómo redirigir una web con htaccess?
RewriteEngine On
RewriteRule ^(.*)$ http://opinguino.es/$1 [R=301,L]
¿Se podría redirecionar el tráfico web a cierta dirección?
La respuesta es sí, siguiendo esta instrucción
Redirect/redirígeme.html http://opinguino.es/redirigir/pagina-deredirección.html
¿Es posible evitar el hotlinking por htaccess?
Lo primero es saber que es el hotlinking; el hotlinking consiste en realizar un enlace directo desde una web a otra… un ejemplo de hotlinking sería por ejemplo que mostrasen una imagen o video de tu página en otra web. Hay que decir que el hotlinking es una práctica poco ética de algunos, en muchos casos por desconocimiento, pues básicamente te están “robando” transferencia de tu web cada vez que alguien abra esa imagen o video en otra web. Ahora el como se hace.
RewriteEngine On
RewriteCond % !^http://(.+\.)?nombre-de-mi-dominio\.com/ [NC]
RewriteCond % !^$
RewriteRule .*\.(jpe?g|gif|bmp|png)$ [L]
En esta última línea se ponen las extensiones de los ficheros que queremos evitar que nos enlacen.
¿Cómo crear url amigables desde htaccess?
Una URL amigable es aquella que evita la aparición propia de ciertos parámetros, creados generalmente por medio de algún cms (wordpress, joomla, drupal…) disfrazando la url como otra. Generalmente esta url amigable suele estar destinada para una mejor posicionamiento en los buscadores.
Un ejemplo de url no amigable sería: /archivo.php?id=007&idioma=es
Para crear estas url amigables dentro de una carpeta usaremos el siguiente código:
Options +FollowSymLinks
RewriteEngine on
RewriteRule carpeta/(.*)/(.*).php$ /carpeta/fichero.php?id=$1
(.*) será el parámetro que le pasaremos, $1.
(.*).php$ será el nombre del fichero para “decorar” la URL
Una vez creado el .htaccess, en la web, un enlace a esta página sería:
<a href=”carpeta/12/nombre-del-fichero.php”> Enlace al fichero 12</a>
La url amigable que creado aquí es básica, a esto se le podría dar más vueltas para optimizar las url. Hay que decir que la mayoría de los CMS suelen tener plugins o accesorios para facilitar la creación de urls amigables.
¿Se puede proteger una carpeta con usuario y contraseña con htaccess?
La respuesta es sí; pero hay que crear un archivo junto al .htaccess que se llame .htpasswd
En este fichero .htpasswd se coloca la siguiente instrucción:
Nombre_de_usuario: contraseña_de_la_carpeta
Hay que decir que en este fichero la contraseña tiene que aparecer encriptada en MD5() para hacer esto, se puede usar alguna utilidad online como:
http://www.euronet.nl/~arnow/htpasswd/
http://www.htmlite.com/HTA006a.php
o dirigirse al manual de referencia de Apache.
Es muy importante decir, y recordar, que sí creas este archivo desde tu PC has de subirlo al servidor en MODO ASCII para que reconozca la contraseña cifrada. No funciona sobre contraseñas no cifradas.
Una vez configurado el .htpasswd se pasa crear el .htaccess:
AuthUserFile /ruta/absoluta/hacia/.htpasswd
AuthName “Necesita validarse”
AuthType Basic
require user usuario
¿Cómo activar la compresión de php en .htaccess?
Para activar la compresión de PHP y ahorrar ancho de banda se usa esta instrucción:
php_value zlib.output_compression 16386
¿Cómo Personalizar la página de error HTTP 404?
ErrorDocument 404 /pagina-no-encontrada.html
Lo que hace esta instrucción es que cada vez que aparezca una página de error HTTP 404 (página no encontrada) nos redirige hacia pagina-no-encontrada.html
¿Se puede bloquear robots maliciosos con .htaccess?
Sí se puede, para ello hay que usar mod_rewrite; usando esta instrucción:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR]
RewriteCond %{HTTP_USER_AGENT} ^Wget [OR]
RewriteCond %{HTTP_USER_AGENT} ^Widow
RewriteRule .* – [F]
¿Cómo cambiar la extensión de los lenguajes de programación?
Esto puede ser requerido por dos factores principalmente; 1º un intento de aumentar la seguridad de tu sitio al esconder el lenguaje de programación y 2º esconder el propio lenguaje de programación. La instrucción es la siguiente:
AddType application/x-httpd-php .cool
¿Cómo quitar el www de la dirección web?
Por diversos motivos, hay muchos desarrolladores que están a favor de que en sus direcciones no aparezca el www. Si no, que siempre aparezca http://
Realizar esto desde .htaccess resulta muy simple siguiendo estas líneas:
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{http_host} ^www\.tusitio\.com[nc]
RewriteRule ^(.*)$ http://tusitio.com/$1 [r=301,nc]
¿Cómo banear Ip de spamers y gente no deseada desde .htaccess?
La idea es simple, partiendo de la base de cómo bloquear el acceso que comenté anteriormente, con una pequeña modificación se llega a esta conclusión:
order allow,deny
deny from 192.168.1.100
allow from all
y sí quisiésemos que fuera de un rango de ips bastaría con cambiar la línea de denegación por esta
deny from 192.168.1.0/254
Puedes añadir tantas líneas con deny from como precises
¿Se puede cambiar la página por defecto?
Si. Hay que aclarar que la página por defecto se refiere a la página de inicio del dominio, la que sale al escribir http://opinguino.es la idea es reescribir la prioridad de lectura para cargar esta página quedando:
DirectoryIndex inicio.html index.htm index.html index.php
Lo que haría que en el directorio raíz se mostrase primero inicio.html y en caso de que no existiera index.htm y así sucesivamente.
¿Cómo prevenir acceso al propio archivo .htaccess?
Para evitar que puedan leernos el archivo .htaccess:
order allow,deny
deny from all
¿Se pueden bloquear visitantes que vengan de un dominio especifico?
Sí tienes algún dominio que te esté tocando las narices por medio de un link, o simplemente no quieres que nadie que venga a tu página desde una página puedes denegar el acceso así:
RewriteEngine on
RewriteCond %{HTTP_REFERER} dominio\.com [NC,OR]
RewriteRule .* – [F]
¿Hay herramientas para crear automáticamente el .htaccess?
Sí las hay. Pero siempre es preferible hacerlo uno mismo, nos dará más control de lo que se hace y mayor personalización según nuestras necesidades. De todos modos algunos sitios son:
.htaccess Tools: http://www.htaccesstools.com/
.htaccess Generator: http://cooletips.de/htaccess/
.htaccess Generator en Webmaster Toolkit: http://www.webmaster-toolkit.com/htaccess-generator.shtml
.htaccess Generator: http://developers.evrsoft.com/tools-htaccess-generator.shtml





















Gracias estaba buscando data de estos temas!