NorfiPC
NorfiPC » Códigos » Trucos para HTACCESS

Como usar HTACCESS en Apache, trucos y ejemplos prácticos



Códigos para hacer redirecciones, bloquear direcciones IP, personalizar mensajes de error, quitar o agregar www a un dominio, crear direcciones amigables, mejorar la velocidad de un sitio web y otras acciones en el servidor usando este archivo de configuración.
Como usar HTACCESS en Apache, trucos y ejemplos prácticos



¿Qué es un archivo .htaccess?


HTACCESS es un sencillo archivo de texto que se puede emplear como una poderosa y útil herramienta para configurar cientos de acciones en un servidor web que usa Apache, sin tener que hacer cambios en el archivo principal de configuración.
El nombre .htaccess proviene de "hypertext access" y también se le conoce como "archivo de configuración distribuida".
Es imprescindible conocer las acciones más sencillas que se pueden realizar con este archivo.
Como decíamos es un archivo de texto plano en el que se insertan una o varias directivas de configuración.
Htaccess se puede usar en la raíz del sitio o en cualquier directorio especifico, siempre que la directiva "AllowOverride" en la configuración principal de Apache lo permita.
En la práctica se utiliza para muchas tareas entre ellas:
Crear direcciones amigables
Crear redirecciones
Restringir el acceso a directorios del servidor
Bloquear el acceso desde ciertas direcciones IP
Manejar errores del servidor
Evitar el hotlink o enlace a imágenes
Cambiar un dominio con o sin WWW
En este artículo compartimos una selección de las cosas que se pueden hacer con HTACCESS, que puede ser de interés a cualquier aficionado que tenga un sitio web con Apache.
Como crear un archivo HTACCESS y configurarlo
Aunque en este artículo nos referimos a este archivo como HTACCESS para resaltarlo, su nombre exactamente es el siguiente:
.htaccess
En Windows no se puede crear, solo recibimos un mensaje de error.
La opción más sencilla para crearlo es copiar uno existente y modificar su contenido usando el Bloc de notas u otro editor de texto plano.



Lista de usos prácticos de HTACCESS


En los siguientes ejemplos las líneas que comienzan con el carácter de almohadilla (#) son solo comentarios, se pueden copiar y pegar en htaccess que serán ignoradas.

Redireccionar páginas con HTACCESS


Unos de los usos más frecuentes de HTACCESS es redireccionar páginas ya sea en el mismo sitio o a un sitio externo.

- Redireccionar página vieja a una nueva en el mismo sitio
RewriteEngine on
Redirect 301 /vieja.html /nueva.html

- Redireccionar página vieja a una nueva en otro sitio.
RewriteEngine on
Redirect 301 /vieja.html http://otrositio/nueva.html

- Redireccionar directorio.
RewriteEngine on
Redirect 301 /docs/ http://new.example.com/docs/

- Redireccionar un sitio sin WWW a direcciones con WWW.
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

Sin especificar el nombre del domino Y usar HTTP y HTTPS:
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]

- Redireccionar un sitio con WWW a direcciones sin WWW.
RewriteEngine on
rewritecond %{http_host} ^www.norfipc.com [nc]
rewriterule ^(.*)$ http://norfipc.com/$1 [r=301,nc]

También se puede hacer sin especificar el nombre del domino de la siguiente forma:
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

Lo mismo pero para redireccionar y usar HTTP y HTTPS:
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

- Usar HTTPS en todo el sitio.
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Otra opción:
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

- Usar solo en un directorio del sitio HTTPS
<If "%{SERVER_PROTOCOL} != 'HTTPS'">
Redirect 301 /directorio/ https://sitio.com/directorio/
</If>



Proteger un directorio del servidor con HTACCESS


La forma más segura de proteger el acceso a un directorio completo del servidor al que solo se pueda acceder con un nombre de usuario y una contraseña, es usando la directiva AuthConfig.
Mensaje de un directorio protegido con HTACCESS
Son necesarias dos acciones:
1- Crea un archivo .htpasswd (puede tener otro nombre) que contenga el nombre del usuario y la contraseña y guárdalo en un directorio que no sea accesible desde la web.
2- Crea un archivo .htaccess en el directorio que se desea proteger con el siguiente código:
AuthType Basic
AuthName "Este directorio está protegido"
AuthUserFile /ruta/.htpasswd
Require valid-user

¿Cómo crear un archivo .htpasswd?
Es un simple archivo de texto plano que posee la siguiente línea:
Norfi:contraseña
Por ejemplo en:
Norfi:$apr1$343oXfi7$18Q7aeYEeOKU7wRaaK/MR/
El usuario es: "Norfi" y la contraseña: "123456"
Para mayor seguridad la contraseña debe estar encriptada con MD5 o con Crypt.
En caso de varios usuarios cada uno va en una línea diferente.
Este archivo se puede crear de varias formas:
-Manualmente
- Usando el comando htpasswd.exe incluido en la carpeta bin de una instalación local de Apache de la siguiente forma:
htpasswd -cb .htpasswd usuario contraseña
- Usando un servicio online



Guardar más tiempo las imágenes en la cache del navegador


Con el siguiente código podemos establecer que recursos estáticos como imágenes permanezcan más tiempo en la cache del navegador.
De de esa forma al entrar el mismo usuario a nuestro sitio, no tendrá que cargarlos de nuevo y mejora considerablemente la velocidad de navegación.
En este ejemplo se establece en 24 horas, pero se puede fijar en un valor superior en segundos.
<FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$">
Header set Cache-Control "max-age=28800"
</FilesMatch>
Para una semana usa: max-age=604800
Para un mes: max-age=2592000
Lee mas informacion detallada y conoce otras opciones: Como hacer más rápida la carga de una página web en un servidor Apache

Evitar el Hotlinking de imágenes y archivos para descargar


Con el siguiente código evitamos que enlacen las imágenes o los archivos de descarga que ofrecemos en nuestro sitio.
Solo se podrá acceder a ellos si son referidos por una página nuestra.
RewriteCond %{HTTP_REFERER} !^http://norfipc.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://norfipc.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.norfipc.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.norfipc.com$ [NC]
RewriteRule .*\.(jpg|gif|bmp|zip|swf|deb)$ - [F,NC]



Aplicar directivas a todos los archivos de un directorio


Esta opción es de utilidad para establecer el modo en que los robots de los buscadores indexan los archivos de un directorio.
Por ejemplo yo lo uso para que se indexen todos los archivos en la carpeta donde guardo los archivos PDF, pero no se escape el PageRank por los enlaces de dichos archivos.
<Files ~ "\.pdf$">
Header set X-Robots-Tag "index, nofollow"
</Files>

Crear y usar páginas personalizadas de error


Ante cualquier tipo de error el usuario recibe una o página de error predeterminada que casi siempre está en idioma ingles y no muestra información detallada.
Lo ideal es crear nuestras propias páginas de error con explicación detallada en cada caso y con enlaces y cuadros de búsquedas en el sitio, que sean de ayuda a los lectores con pocos conocimientos de navegación. La página de error 404 (no se encuentra) es fundamental.
A continuación podemos usar las siguientes directivas para que Apache use las páginas creadas.
ErrorDocument 404 /error404.html
Para otros tipos de error
ErrorDocument 500 /error500.html

Bloquear el acceso desde direcciones IP


Order deny,allow
Allow from all
Deny from 124.34.48.165
Deny from 102.54.68.123



Otros trucos para HTACCESS


Cambiar la página index de un directorio


DirectoryIndex about.html

Deshabilitar la navegación por los directorios del servidor


Options All –Indexes

Mensajes en los encabezados del sitio web


A los usuarios y lectores con conocimientos avanzados puedes enviarles un mensaje usando los encabezados HTTP.
Por ejemplo:
Header set Hiring-Now "Hola, encuentra información útil en nuestro sitio NorfiPC"
Para saber cómo ver los encabezados, lee el siguiente artículo: Como usar la consola de JavaScript del navegador web

Bloquear peticiones del user-agent


Se pueden bloquear a todos los user-agents de las aplicaciones que pueden ser dañinos o simplemente para consumir menos recursos en el servidor.
SetEnvIfNoCase user-Agent ^FrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Java.* [NC,OR]
SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR]
SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR]
SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR]
SetEnvIfNoCase user-Agent ^Zeus [NC]
Order Allow,Deny
Allow from all
Deny from env=bad_bot

Sitio bajo construcción


La siguiente combinación permite a Google rastrear una sección de mi sitio, a mi acceder desde una IP especifica sin contraseña, acceder a cualquiera con el login y password y validar las páginas en el Validador de W3.
AuthType Basic
AuthName "Este directorio está bajo construccion"
AuthUserFile /ruta/.htpasswd
Require valid-user
Order Deny,Allow
Deny from all
Allow from 200.5.12.21 w3.org googlebot.com google.com google-analytics.com
Satisfy Any

Htaccess se puede usar en multitud de tareas en Apache y nos permite configurar de acuerdo a nuestros intereses todo el funcionamiento de un sitio web.
Toda la información detallada de las directivas las puedes encontrar offline en el manual de Apache incluido en la instalación para Windows.

Páginas relacionadas



Comparte esta página





Sígueme en las redes sociales


Sígueme en Google Plus Sígueme en Facebook Sígueme en Twitter Sígueme en Pinterest





 
Inicio | Mapa del sitio | Sobre mí | RSS | Buscar