norfipc.com
Códigos   Mapa del sitio   Informatica
NorfiPC » Códigos » Trucos para HTACCESS

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


Actualizado: 28 de noviembre del 2023
Por: Norfi Carrodeguas
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

En este artículo comparto varios usos prácticos del archivo HTACCESS, en un servidor con Apache para cambiar y modificar aspectos de la configuración y funcionamiento de un sitio web, local o en internet.


¿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 todos los archivos en un directorio a otro directorio
RewriteEngine on
Redirect 301 /docs/ http://new.example.com/docs/ 

- Redireccionar a una página todas las páginas de un directorio
RewriteOptions inherit
RewriteEngine On
RewriteRule ^(.*)$ https://pagina.html [R=301,L] 

- 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] 

La misma acción anterior, pero sin especificar el nombre del dominio 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] 

La misma acción anterior, pero sin especificar el nombre del dominio
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. Dos opciones.
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L] 

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

Eliminar extensiones de la dirección URL,en este ejemplo .php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]


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.
No obstante permitimos que sean usadas en Google Imágenes y las redes sociales Facebook y Pinterest.
Además nos aseguramos que no sean bloqueadas las arañas de los buscadores.
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?norfipc.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?google.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?bing.com [NC]
#Permitir acceso por URL
RewriteCond %{HTTP_REFERER} !^$
#Permitir acceso buscadores
RewriteCond %{HTTP_REFERER} !google. [NC]
RewriteCond %{HTTP_REFERER} !search?q=cache [NC]
RewriteCond %{HTTP_REFERER} !msn. [NC]
RewriteCond %{HTTP_REFERER} !yahoo. [NC]
#Permitir acceso robots
RewriteCond %{HTTP_USER_AGENT} !googlebot [NC]
RewriteCond %{HTTP_USER_AGENT} !msnbot [NC]
#Permitir acceso redes sociales
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?pinterest.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?tumblr.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]


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


Cambiar la página index de un directorio

DirectoryIndex about.html 

Deshabilitar la navegación por los directorios del servidor

Options All –Indexes 
El empleo de esta opción ocasiona que Google indique errores de rastreo por Googlebot en los directorios.
Lee más información: Impedir acceso directorios del sitio y errores de usabilidad móvil.

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 


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

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



Comparta esta página
Facebook
Twitter

Sígueme en las redes sociales


Norfipc en Facebook Norfipc en Twitter Canales RSS con las últimas publicaciones

 
Inicio | Mapa del sitio | Buscar | Sobre mí