Códigos » Trucos para HTACCESS
Como usar HTACCESS en Apache, trucos y ejemplos prácticos
Actualizado: 28 de noviembre del 2023
Por: Norfi Carrodeguas
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.

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 a directorios del servidor
Bloquear el 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.Crear redirecciones
Restringir el a directorios del servidor
Bloquear el desde ciertas direcciones IP
Manejar errores del servidor
Evitar el hotlink o enlace a imágenes
Cambiar un dominio con o sin WWW
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.
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} ^norfipc.futbolgratis.org [nc]
rewriterule ^(.*)$ http://norfipc.futbolgratis.org/$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 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=604800Para 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.futbolgratis.org [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?google.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?bing.com [NC]
#Permitir por URL
RewriteCond %{HTTP_REFERER} !^$
#Permitir buscadores
RewriteCond %{HTTP_REFERER} !google. [NC]
RewriteCond %{HTTP_REFERER} !search?q=cache [NC]
RewriteCond %{HTTP_REFERER} !msn. [NC]
RewriteCond %{HTTP_REFERER} !yahoo. [NC]
#Permitir robots
RewriteCond %{HTTP__AGENT} !googlebot [NC]
RewriteCond %{HTTP__AGENT} !msnbot [NC]
#Permitir 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 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 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 directorios del sitio y errores de usabilidad móvil.
Mensajes en los encabezados del sitio web
A los s 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 webBloquear peticiones del -agent
Se pueden bloquear a todos los -agents de las aplicaciones que pueden ser dañinos o simplemente para consumir menos recursos en el servidor.SetEnvIfNoCase -Agent ^FrontPage [NC,OR]
SetEnvIfNoCase -Agent ^Java.* [NC,OR]
SetEnvIfNoCase -Agent ^Microsoft.URL [NC,OR]
SetEnvIfNoCase -Agent ^MSFrontPage [NC,OR]
SetEnvIfNoCase -Agent ^Offline.Explorer [NC,OR]
SetEnvIfNoCase -Agent ^[Ww]eb[Bb]andit [NC,OR]
SetEnvIfNoCase -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 y y validar las páginas en el Validador de W3.AuthType Basic
AuthName "Este directorio está bajo construccion"
AuthFile /ruta/.htwd
Require valid-
Order Deny,Allow
Deny from all
Allow from 200.5.12.21 w3.org googlebot.com google.com
Satisfy Any
Proteger un directorio del servidor con HTACCESS
La forma más segura de proteger el a un directorio completo del servidor al que solo se pueda acceder con un nombre de y una contraseña, es usando la directiva AuthConfig.
Son necesarias dos acciones:
1- Crea un archivo .htwd (puede tener otro nombre) que contenga el nombre del 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"
AuthFile /ruta/.htwd
Require valid-
¿Cómo crear un archivo .htwd?
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 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 s cada uno va en una línea diferente.
Este archivo se puede crear de varias formas:
-Manualmente
- Usando el comando htwd.exe incluido en la carpeta bin de una instalación local de Apache de la siguiente forma:
htwd -cb .htwd contraseña
- Usando un servicio online
- Usando el comando htwd.exe incluido en la carpeta bin de una instalación local de Apache de la siguiente forma:
htwd -cb .htwd 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.
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
✓ Como escribir con PHP en las páginas web
✓ Como proteger los formularios y evitar la inyección de código SQL en PHP
✓ Los encabezados HTTP o headers
✓ Como subir fotos, imágenes y otros archivos a un servidor web
✓ Como proteger una página web con contraseña con PHP
✓ Como crear un convertidor de imágenes en caracteres ASCII usando PHP
✓ Como instalar y configurar el servidor web Apache en Windows
✓ Como instalar y configurar PHP en el servidor Apache en Windows
✓ Como mover mi sitio web de HTTP a HTTPS, todos los pasos
✓ Instalar el servidor Apache y PHP con XAMPP en Windows
✓ Como proteger los formularios y evitar la inyección de código SQL en PHP
✓ Los encabezados HTTP o headers
✓ Como subir fotos, imágenes y otros archivos a un servidor web
✓ Como proteger una página web con contraseña con PHP
✓ Como crear un convertidor de imágenes en caracteres ASCII usando PHP
✓ Como instalar y configurar el servidor web Apache en Windows
✓ Como instalar y configurar PHP en el servidor Apache en Windows
✓ Como mover mi sitio web de HTTP a HTTPS, todos los pasos
✓ Instalar el servidor Apache y PHP con XAMPP en Windows
Comparta esta página
Facebook
Twitter