Un fichero .htaccess (hypertext access), también conocido como archivo de configuración distribuida, es un fichero especial, oculto, popularizado por el Servidor Web Apache, que nos permite definir diferentes directivas de configuración para cada directorio (con sus respectivos subdirectorios) sin necesidad de editar el archivo de configuración principal de Apache.
Para crear un documento .htaccess se debe abrir una nueva hoja .txt y a la hora de guardarla darle el hombre de .htaccess (importante agregar el punto al inicio).
Usos frecuentes del .htaccess
* Restringir el acceso a directorios
* Restringir el acceso a IPs o ISPs
* Creación de URLs Amigables (semánticas)
* Manejar errores del servidor
* Crear redirecciones estáticas
* Controlar Cache
* Evitar hotlinking
* Forzar Dominio sin WWW
Código para hacer ajustes a un sitio web con .htaccess
Lo primero es escribir estas directrices al inicio del archivo:
#### START REDIRECCIONES #####
Options +FollowSymLinks
RewriteEngine on
Control de acceso
Para deshabilitar totalmente el acceso a una carpeta determinada, se debe crear un archivo .htaccess en esa carpeta que contenga
#deny all access
deny from all
Si se desea permitir el acceso desde una IP específica
#deny all access
deny from all
allow from 10.0.0.1
o para un rango específico de IPs
allow from 192.168.0.0/24
También se puede bloquear el acceso a un archivo específico
Deny from all
Activar compresión
Se puede habilitar la compresión de datos inherente de PHP para ahorrar ancho de banda
php_value zlib.output_compression 16386
Esconder archivos
Para deshabilitar el acceso a un archivo en particular se puede utilizar una expresión regular y la directiva Files para denegar acceso a cualquier archivo que comience con .ht
Se puede modificar esto para restringir un archivo en particular (como archivos de configuración, robots.txt, archivos de logs o lo que se desee).
Order allow,deny
Deny from all
Satisfy All
Páginas de error HTTP 404 personalizadas
Para redireccionar a los visitantes cada vez que se encuentran con una página de error HTTP 404, se debe utilizar éste código:
ErrorDocument 404 /errores/noencontrado.html
Esto redirige al usuario hacia /errores/noencontrado.html cada vez que sucede un error 404. Además, se puede redefinir para que capture otros errores http (403, 5000, etc).
Para evitar un problema con IE, asegúrense de que esta página personalizada supere los 512 bytes de tamaño.
Bloqueo de referers maliciosos. Evita el hotlinking
Si se desea bloquear algunas partes del sitio de cualquier referer malicioso:
RewriteEngine on
RewriteCond %{HTTP_REFERER} ejemplo\.com [NC,OR]
RewriteCond %{HTTP_REFERER} otroejemplo\.com
RewriteRule .* - [F]
Utilizando el motor rewrite (de reescritura) se denegará 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ón de archivos).
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://([-a-z0-9]+\.)?example\.com[NC]
RewriteRule .*\.(zip|mp3|avi|wmv|mpg|mpeg)$ http://www.example.com/images/nohotlink.gif [R,NC,L]
Esto dice: “si el visitante no proviene de misitio.net, entonces redirige todos los pedidos de archivos (zip, mp3, avi, wmv, mpg, mpeg) a una imagen que dice “No permitimos hotlinking” De esa forma, puedes redirigir a una página, o lo que desees, o puedes modificar la lista de extensiones de archivo para incluir/quitar otros archivos. Cuidado: cuando se decide bloquear el hotlinking de imágenes recuerda que puedes estar bloqueando todo tráfico fuera del alcance de tu dominio. Por ejemplo, si se posee un archivo de sindicación tomado por bloglines necesitarás modificar la regla para permitirles a los lectores obtener las imágenes - o el RSS se verá mal.
Es importante eliminar el www que se encuentra en una gran cantidad de sitios web, no por una cuestión de mejor posicionamiento, sino por simplicidad y como una forma de expresar las direcciones web que desde hace años se está impulsando. Para hacer esto, basta con una simple regla de re-escritura:
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{http_host} ^www\.example\.com[nc]
RewriteRule ^(.*)$ http://example.com/$1 [r=301,nc]
Escondiendo la extensión del lenguaje de scripting
Se puede aumentar la seguridad cambiando la extensión de los scripts para que los visitantes desconozcan qué lenguaje estás utilizando:
# Make PHP code look like unknown types
AddType application/x-httpd-php .cool
De esta forma, los archivos .cool serán tratados como si fuesen archivos PHP. Se deben renombrar los archivos que se quiera con esta nueva extensión.
Cambiando la página por defecto
Se puede utilizar esta instrucción para cambiar la página por defecto (el orden es importante)
DirectoryIndex inicio.html index.htm index.html index.php
Evitando el error 500
Pasando el juego de caracteres se evita el mostrar un error 500
AddDefaultCharset utf-8
Directiva CheckSpelling (Control de Ortografía)
Esta directiva puede ser útil para auto-corregir errores de ortografía simple en la URL
CheckSpelling On
Agregar sumario MD5
Si no se está preocupado por problemas de performance, se puede agregar un cálculo de llave MD5 para agregar un MIC (Control de Integridad de Mensaje) en cada pedido. Esto es útil para controlar la integridad del mensaje.
ContentDigest On
Algunos consejos
* Mantener el archivo .htaccess organizado. Utiliza comentarios (líneas que comienzan en #) y tratar de ser consistente. Es complicado entender un archivo .htaccess desorganizado una vez que crece lo suficiente.
* Cuando se utilicen reglas de reescritura de URLs, agrega la opción [L] a aquellas páginas finales (como la de hotlinking y demás). Esto le dirá al servidor que no procese más reglas (aumentando la performance).
* Cuidado con la herencia: el archivo .htaccess a nivel raíz es aplicado también en las carpetas, cualquier regla .htaccess en la carpeta puede reemplazar las reglas de la carpeta raíz.
5 comentarios :
Con htaccess puedes hacer maravillas desde proteger tu web, crear url limpias e incluso crear urls virtuales muy bueno para posicionar contenidos dinamicos.
Os dejo mi nuevo directorio seo para que cojais rank.
Nuevo directorio seo:
http://directorio.calzadosarpe.com
saludos...
Buena data. Gracias por la info.
Un tema relacionado al .htaccess, aunque no directamente con el artículo, pero lo comento por si le sirve a alguien.
Una web hecha con CakePHP, totalmente dependiente del htaccess fue migrada de servidor, de uno compartido a uno dedicado. El tema es que al instalar la web no funcionaba, lo primero que pense es que era algo relacionado al htaccess. El problema es que yo no sé de administrar servidores asi que despues de dar varias vueltas y probar distintas cosas dimos con la solucion.
En definitiva, cuando hay problemas con el htaccess lo primero es mirar esto: http://murci.wordpress.com/2006/11/11/cuando-no-funciona-el-htaccess-en-apache/
Para que sirve el atributo %
Realmente, no se si tiene alguna finalidad específica el %.
Se utiliza siempre con RewriteCond, pero no se si en alguna otra sentencia del código, por lo cual no podría decir cuál es su función..
Saludos!
Publicar un comentario