Archivo .htaccess: Todo lo que puedes hacer con él

¿Qué puedo hacer en el .htaccess?

En este archivo puedes hacer bastantes cosas, aquí te indico algunas que se irá complementando con el paso del tiempo, comezaré explicando brevemente los tópicos que veremos de manera rápida para después entrar en detalle. Dentro de las acciones que podemos realizar dentro de las configuraciones del archivo .htaccess, se encuentran estas que comenzaré mencionando:

Cuando el usuario escriba una dirección de tu web que no existe o bien ocurre algún otro error en lugar de aparecerle el típico mensaje “Página no encontrada Error 404” aparecerá una página especialmente diseñada por ti con el contenido que tú elijas.

Cuando el usuario intente entrar a alguna página o carpeta concreta puedes enviarlo a otra la que tú elijas. Este es muy útil si le cambias el nombre a una página y sin embargo hay personas que siguen intentando entrar a la dirección antigua. Esto hará que en lugar de aparecer el mensaje de error genérico o el tuyo específico el usuario llegue a la página a la que quería llegar.

Algunos webmasters que copian tus contenidos en lugar de descargarse las imágenes y situarlas en su servidor enlazan la tuya con lo que sus usuarios están viendo tus imágenes en otra web pero eres tú el que paga el gasto de trasferencia.

En ocasiones nos puede interesar que una página tenga una ruta larga para que se indexe mejor en buscadores o para mantener la lógica de la estructura de carpetas de nuestro sitio y al mismo tiempo esta página debería tener un acceso fácil que se pueda comunicar de una persona a otra cuando se la dice de palabra y sea fácil de recordar y escribir.

Algunos usuarios más avanzados cuando leen una página nuestra, por ejemplo http://www.misitio.com/automoviles/mercedes/delujo/modelo-italiano.html se interesan por otras página similares que podamos tener pero por lo que sea la buscan cortando la dirección en el navegador para llegar a la index de la carpeta, por ejemplo cortando hasta http://www.misitio.com/automoviles/mercedes/delujo/ y puede ocurrir que nosotros no hayamos hecho index para esa carpeta, por ejemplo porque sólo tengamos una página de mercedes de lujo y la reservamos por si más adelante ponemos más y entonces haremos una página de grupo con ella. En este caso al usuario le saldrá un mensaje de error.

Veamos estos procesos de uno en uno, cómo hacerlos y algunas sugerencias sobre ellos.

1. Crear una página de error personalizada

Código a insertar

Por cada error que quieras redirigir a una página de error debes poner una línea como esta, siempre en línea aparte y exactamente así como las pongo, aunque sólo te indico algunos ejemplos:

 ErrorDocument 400 /error.html
 ErrorDocument 401 /error.html
 ErrorDocument 403 /error.html
 ErrorDocument 404 /error.html
 ErrorDocument 500 /error.html

Detalles de las páginas de error

Respecto a las páginas destino (la página con el mensaje de error personalizado es en este caso /error.html) puedes crear una para cada tipo de error concreto y llamarlas como quieras, pero ten en cuenta que si las vas a poner en una carpeta de la web debes indicarla también, así si vas a poner una para cada error y las vas a meter en la carpeta www.misitio.com/errores/ deberías escribir esto:

 ErrorDocument 400 /errores/error400.html
 ErrorDocument 401 /errores/error401.html
 ErrorDocument 403 /errores/error403.html
 ErrorDocument 404 /errores/error404.html
 ErrorDocument 500 /errores/error500.html

¿Dónde coloco el código?

Mi consejo es que este código vaya abajo del todo del .htaccess

¿Alguna sugerencia?

Si: mejor no abuses en la página de error del uso de otros archivos secundarios ajenos a ella: la página debe estar preparada para aparecer con claridad cuando hay problemas en la web. Si le pones de todo, varias imágenes, una hoja de estilos .css, un fondo, música, realmente es fácil que en muchos casos quede peor la página de error que el simple mensaje del navegador que intentamos mejorar

2. Redireccionar una página

Código a insertar

Por cada página o carpeta que quieras redireccionar deberías introducir una línea tal que así:

 Redirect permanent /ajedrez/fotos.htm http://www.alfinsolos.com/personal/ajedrez/index.html

La página que escribe el usuario (o a la que entra desde un enlace) es www.alfinsolos.com/ajedrez/fotos.html y a la que llega es a http://www.alfinsolos.com/personal/ajedrez/index.html

La página de destino no tiene porqué estar necesariamente en la misma web tuya, puede ser de otra web.

¿Deben llevar algún orden?

Te recomiendo mucho que pongas las líneas de Redirección permanente por estricto orden alfabético de la página a la que intenta acceder el usuario, si en un futuro las redirecciones aumentan en número te puedes crear un lío muy gordo si no lo has hecho así desde el principio, sólo te indico una excepción a esto que te pongo más abajo.

Pienso que la cuestión del orden alfabético no motiva a dudas a la hora de aplicarlo, pero puede haber confusión respecto a las páginas que están en carpetas y subcarpetas o en la raíz del sitio, lo mejor es poner las carpetas primero y luego las que están en la raíz, respecto a las subcarpetas, siempre primero las subcarpetas por profundidad de ruta, a mayor profundidad de ruta antes debe ponerse.

las carpetas en sí y los archivos dentro de cada carpeta o subcarpeta también deben estar en orden alfabético. Si te lías mucho con el orden cualquier ventana de exploración (Mi PC o el panel de carpetas de frontpage) te las puede y suele ordenar de esta manera que digo.
Aquí un ejemplo ficticio con varios niveles en el orden que recomiendo, la página destino es que soy muy flojo y le he puesto variantes de la misma, en cada caso deberá ir la que sea:

 Redirect permanent /ajedrez/fotos.htm http://www.misitio.com/personal/ajedrez/index-ab.html
 Redirect permanent /buscar/buscadores/google.htm http://www.misaitio.com/personal/ajedrez/index-w.html
 Redirect permanent /buscar/como-buscar.htm http://www.misitio.com/personal/ajedrez/index-ba.html
 Redirect permanent /cableados/antenas-tv/index.htm http://www.misitio.com/personal/ajedrez/index-na.html
 Redirect permanent /cableados/antenas-tv/mas-graficas.htm http://www.misitio.com/personal/ajedrez/index-mf.html
 Redirect permanent /cableados/electricos/index.htm http://www.misitio.com/personal/ajedrez/index-3a.html
 Redirect permanent /cableados/fotografias.htm http://www.misitio.com/personal/ajedrez/index-ac.html
 Redirect permanent /sitemap.htm http://www.misitio.com/personal/ajedrez/index-bac.html

¿Cómo redirecciono una carpeta entera?

Así:

Redirect permanent /ajedrez/ http://www.alfinsolos.com/personal/ajedrez/

Esto es útil si no cambiaste el nombre de los archivos de las carpetas, sino sólo la carpeta en la que están. Puede darse un caso particular que creo que será muy frecuente en el tipo de editor web para el que me gusta escribir, a saber: que tengamos en un principio una sola web con contenidos de diversas temáticas distribuidas por carpetas por ejemplo tenemos www.miwebpersonal.com con las carpetas www.miwebpersonal.com/baloncesto/ www.miwebpersonal.com/empresariales/ y www.miwebpersonal.com/cine-de-accion/ y con el tiempo crecen los contenidos y decidimos crear tres dominios diferentes a los que migrar los contenidos, en el .htaccess de www.miwebpersonal.com/ pondríamos:

 Redirect permanent /baloncesto/ http://www.miclubdebaloncesto.com/
 Redirect permanent /cine-de-accion/ http://www.mispeliculasfavoritas.com.mx/
 Redirect permanent /empresariales/ http://www.carreradeempresariales.net/

¿Cual era esa excepción?

Bien, no sé si estrictamente hablando del orden alfabético es una excepción o no pero esto hay que tenerlo en cuenta.
Los ordenadores ya sabéis como son, y un servidor no deja de ser un ordenador. Leen los archivos en orden conforme están escritos y en cuanto encuentra una orden válida la ejecuta sin leer el resto. Es por ello que si quieres dirigir todos los archivos de una carpeta a otra carpeta excepto uno de ellos que quieres que vaya a otro lado si pones esto:

 Redirect permanent /ajedrez/ http://www.alfinsolos.com/personal/ajedrez/
 Redirect permanent /ajedrez/fotos.htm http://www.alfinsolos.com/antiguas/varias.html

La segunda orden no se ejecutará nunca, debes ponerlo así:

 Redirect permanent /ajedrez/fotos.htm http://www.alfinsolos.com/antiguas/varias.html
 Redirect permanent /ajedrez/ http://www.alfinsolos.com/personal/ajedrez/

Cuidado con los bucles

Si escribes esto en el .htaccess de alfinsolos.com:

 Redirect permanent /ajedrez/fotos.htm http://www.alfinsolos.com/ajedrez/fotos.html

El navegador del usuario entrará en un bucle infinito pues cuando va a buscar la página primero lee el .htaccess, ve que en vez de ir a ella debe ir a la de destino, que es la misma, y al intentar acceder lee de nuevo primero el .htaccess con lo que se encuentra otra vez la misma línea… y sigue dando vueltas como un burro a una noria.

En tus estadísticas notarás que te ha pasado esto porque la cantidad de visitas es la misma de cualquier día pero las páginas vistas se han disparado desorbitadamente.

¿Debo cambiar los enlaces en la web?

Una vez redireccionada una página con el .htaccess no es necesario cambiar los enlaces internos de la web que apuntaban a la dirección antigua, pero aunque yo lo hago siempre es por una cuestión de elegancia y satisfacción propia, de limpieza en el trabajo, porque como verlo o notarse no lo va a notar nadie nunca y es muy difícil que produzca algún problema no hacerlo.

En un .htaccess con unas 500 redirecciones añadidas a lo largo de unos tres años imagino que sí que podría dar problemas, pero en uno de los nuestros es difícil.

3. Impedir que otros usen tus imágenes.

¿Cómo sé si me están robando imágenes?

Si en tus estadísticas aparecen bastantes más “clientes” que “visitantes” una de las causas puede ser esta. Puedes consultar los logs para saber si efectivamente es esto lo que ocurre.

Código a insertar

El código varía dependiendo del servidor y el efecto concreto que queremos conseguir, te doy varias urls donde los dan:

Robo de imagenes
Evitando el robo de imágenes

En diversos servidores puede no ser necesaria la primera línea que activa el Mod Rewrite por estar activado por defecto y puede ser que el código necesite ser adaptado para según cual servidor.

Dónde pongo este código

Mi consejo es que lo pongas al principio del .htaccess, arriba de las redirecciones.

4. Hacer que sea fácil recordar una dirección difícil o larga

¿Me puedes poner un ejemplo de esto?

Sí, supongamos que en tusitioweb.com has creado unas páginas para una asociación de astronomía, para que la localicen bien en la red desde google y mantener la lógica de estructura del sitio la página tiene la ruta: http://www.tusitioweb.com/personal/cadiz/sanfernando/astronomia/index.html pero quiero que los distintos asociados y amigos puedan llegar a ella fácilmente si se la dicen unos a otros así que me interesaría que fuera www.alfinsolos.com/astronomia

Código a insertar

 Redirect permanent /astronomia http://www.alfinsolos.com/personal/cadiz/sanfernando/astronomia/index.html

Fíjate que no lleva la barra detrás de astronomía, aunque se pueden incluir dos líneas iguales, una con barra y otra sin ella por si las dudas, eso sí, en ese caso la sin barra ponla arriba de la con barra.

Otra cosa: para hacer esto NO necesitas tener en la web ninguna carpeta ni archivo ni nada llamado astronomia, aunque si lo hay no molesta.

¿Dónde pongo el código?

Entre las demás redirecciones que tengas puestas por su orden alfabético, si me aceptas esa sugerencia que di.

Si tienes una web con una burrada de redirecciones en el .htaccess y estas direcciones cortas van a ser muy usadas podrías probar a ponerlas las primeras de las redirecciones, para ahorrarle tiempo de espera a los usuarios que tengan conexiones a pedales, pero la verdad con lo rápida que es la acción del .htaccess no creo que sea necesario y en cualquier caso yo me decanto por el orden alfabético, porque nunca sabrás si dentro de diez años hará diez años que dejaste de hacer webs o tendrás una web más compleja que la de microsoft.

5. Evitar el error “carpeta sin index” a los usuarios avanzados

Repito cual es este error:

Algunos usuarios más avanzados cuando leen una página nuestra, por ejemplo http://www.misitio.com/automoviles/mercedes/delujo/modelo-italiano.htm se interesan por otras página similares que podamos tener pero por lo que sea la buscan cortando la dirección en el navegador para llegar a la index de la carpeta, por ejemplo cortando hasta http://www.misitio.com/automoviles/mercedes/delujo/ y puede ocurrir que nosotros no hayamos hecho index para esa carpeta, por ejemplo porque sólo tengamos una página de mercedes de lujo y la reservamos por si más adelante ponemos más y entonces haremos una página de grupo con esa index.

En este caso al usuario le saldrá un mensaje de error.

Código a insertar

 Redirect permanent /automoviles/mercedes/delujo/index.htm http://www.misitio.com/automoviles/mercedes/delujo/modelo-italiano.html

Por supuesto la dirección destino no tiene porqué ser la de modelo-italiano, lo lógico es que sea la de la página de grupo donde está la lista de páginas de automóviles que incluye a los más parecidos a los mercedes de lujo italianos que tengamos.

Dónde insertarlo

En orden alfabético entre las demás redirecciones

Eso sería todo por el momento, si tienes alguna otra utilidad al archivo .htaccess no dudes en comentarla más abajo, esta entrada se irá actualizando constantemente, un abrazo.

Búsquedas similares para archivo .htaccess
  • archivo htaccess apache
  • restringir acceso a archivos htaccess
  • bloquear acceso a archivos con .htaccess
  • denegar acceso a archivos htaccess
  • archivo .htaccess apache2
  • como abrir un archivo htaccess
  • ubicacion del archivo .htaccess en apache
  • arsys archivo .htaccess
  • crear archivo htaccess apache
  • htaccess bloquear acceso archivo
  • como borrar archivo .htaccess
  • busca el archivo .htaccess
  • archivo .htaccess codeigniter
  • archivo htaccess como crear
  • crear archivo .htaccess en mac
  • crear archivo .htaccess windows
  • configurar archivo .htaccess
  • como usar el archivo .htaccess
  • como crear un archivo .htaccess en mac
  • como guardar un archivo .htaccess
  • como configurar el archivo .htaccess
  • como editar archivo .htaccess
  • archivo htaccess donde esta
  • archivo htaccess drupal
  • archivo .htaccess descargar
  • donde esta el archivo .htaccess wordpress
  • donde esta el archivo .htaccess en ubuntu
  • donde se encuentra el archivo htaccess
  • estructura de un archivo htaccess
  • donde esta el archivo .htaccess en xampp
  • uso del archivo .htaccess
  • htaccess debe escribir un nombre de archivo

Gracias por comentar!