posicionamiento
59

Escrito por

En muchos casos nos encontramos con la situación de tener una dirección URL de una página que hemos cambiado a otra URL nueva, y por supuesto, queremos que nuestros visitantes actuales accedan mediante la nueva dirección.

Asumamos el hipotético caso de querer cambiar a una URL nueva por una serie de razones (hemos cambiado de dominio, el hosting tenía un dominio propio, nos gusta más un dominio.com, etc...). El cambio será, por ejemplo, el siguiente:

http://micarromelorobaron.blogspot.com/ a un nuevo dominio.

En este ejemplo cambiaremos de dirección porque la longitud de la URL original no nos parecía adecuada. Asi pues, cambiamos a una nueva URL:
http://www.micarromelorobaronanochemientrasdormia.com/.

El usuario webmaster suele realizar una de las tareas siguientes para solucionar esta situación:

Avisar por texto e incluir un enlace

El webmaster ha preparado una página para que al acceder a la dirección anterior muestre un texto avisando al visitante humano que la página ha cambiado de dirección, junto a un enlace para acceder a la nueva dirección. La peor solución de todas.

Una redirección META

El webmaster incluye el siguiente código HTML en su dirección anterior:

<head>
<meta http-equiv="refresh"
content="0;URL=http://www.nuevaurl.com/">

<title>La página ha cambiado de dirección </title>
</head>

Con ello realiza una redirección a nivel del navegador (pero que sólo algunos navegadores lo efectuan) y la cuál tarda más en realizarse. Mejor que la anterior, pero sigue siendo una mala opción.

Redirección a nivel del servidor

El webmaster coloca el siguiente código, en un lenguaje de servidor, como por ejemplo ASP o PHP:

<?php
header("Location: http://www.nuevaurl.com/");
?>

Con este ejemplo, hacemos una redirección instantánea. El usuario no se da cuenta de que hay una redirección, excepto por el cambio de la URL. De las mejores soluciones con respecto a las anteriores, no obstante, no es la mejor.

Redirección 301

Esta redirección trata a nivel de usuario humano exactamente igual que la anterior, pero con un ligero cambio que es muy importante.

La mayoría de los buscadores o robots indexadores, al encontrar una redirección 301 saben que la URL ha cambiado a la web redirigida, actualizando en un breve espacio de tiempo todas las URLs antiguas de su base de datos a la nueva URL. Esto es muy importante, ya que en un buscador como Google, por ejemplo, perdería el número de enlaces existentes a su web, muchos usuarios no entrarían y buscarían otra web por no tener que volver a pinchar en un enlace, etc.

<?
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://www.nuevaurl.com" );
?>

¡Por fin! Hemos llegado a la mejor redirección posible.

Redirección 301 con ModRewrite

Una forma más limpia aún, para los que tengan el módulo de ModRewrite instalado en su apache, es la siguiente, editando el fichero .htaccess:

RewriteEngine On
RewriteRule .* http://www.nuevaurl.com/ [R=301]

Para más información, echarle un vistazo a la chuleta de ModRewrite, con más datos sobre este sistema.

Existe, también, una manera todavía más sencilla mediante .htaccess que no requiere ModRewrite:

Redirect 301 / http://www.nuevaurl.com/

La redirección 301 es muy importante por esta última razón. Siempre se debe mantener una dirección principal de esta forma para no duplicar contenido. Además, se rumorea que Google penaliza a páginas con contenido duplicado.

Más sobre redirecciones 301 en More 301 Redirect y redirección 301 en dirson.

RELACIONADOS Emezeta Card ModRewrite Cheat Sheet (v0.1)
Manz

59 comentarios

1 2

flix
1

Segun la especificacion HTML 4.0.1 sobre la etiqueta meta: "The http-equiv attribute can be used in place of the name attribute and has a special significance when documents are retrieved via the Hypertext Transfer Protocol (HTTP). HTTP servers may use the property name specified by the http-equiv attribute to create an [RFC822]-style header in the HTTP response" Lo que significa que deberia ser posible enviar una cabecera con una respuesta de estado 301. De hecho creo q yo tenia un ejemplo por ahi (Tendre q buscarlo).

  • 2
yuip
4

Eso está muy bien si tienes el poder de editar los archivos de código php o asp, pero si es en blogspot.com u otro similar, ¿se podría usar la redirección 301? De todas formas, muy bueno el consejo.

Netito
5

flix, no creo que sea posible hacer una redirección de este tipo con una etiqueta meta: si el navegador lee la etiqueta meta, es que ha recibido correctamente la página, y por tanto ya ha recibido un código 200 OK.

  • 1
Elaine Marley
6

La verdad es que esto viene muy bien. Y es bueno saber eso del contenido duplicado. La putada es que en el caso de blogger, como me puede ocurrir a mí, el php no es una opción... Es una verdadera pena.

  • 1
Manz
7

Efectivamente, como dice Netito desde un META no es posible ya que se ha recibido el código 200 OK. Como si es posible de forma alternativa a PHP es con un htaccess usando mod rewrite. Michel de El Telendro lo explica muy bien en el artículo redireccionamiento 301.

nena
8

Estoy cansado del url y el error 12007 que sale en el eMule y ya no se que hacer. Me gustaría que me aconsejaran es insoportable el estar haciendo de todo y que no sirba de nada.

Maribel
9

hola.. esta muy chida esta informacion, no sabia como hacer esto y me ayudo mucho. =) GRACIAS y tengo otra pregunta, COMO HAGO UN SCROLL ROLL?? tal vez no tenga nada que ver con esto, pero si alguien me puede ayudar, se los agradeceria MUCHOO.

José Antonio
10

Me parece muy interesante lo dicho sobre el redireccionamiento 301 pero no acabo de entender como actuar en la práctica para el caso de ficheros en html como sería mi caso. Mi URL es de la forma .com.es y pretendo que sea de la forma .com y tengo todas las páginas en formato html, ¿que debo hacer? gracias por la respuesta a un torpe. Matemáticas y Poesía

ksswa
11

Interesante artículo. Pero una duda: Y si el hosting te da la posiblidad de redirigir directamente? es decir la url www.prueba1.com la manda a www.nuevadireccion.com Es buena solución o mala? Gracias ;)

David Rodríguez
12

Para hacerlo en una pagina .html, la mejor opcion es hacer que el servidor nos interprete dicho html como una página php, y después hacer la redirección 301 en php como si de tal se tratara. Por si a alquien le sirve de ayuda he preparado un tutorial precisamente para el caso de tener que hacer esta redirección en páginas html. Redirección 301 en páginas HTML

Manz
13

Hola David. Ante todo gracias por tu comentario. Sin embargo, para efectuar una redirección como la que apuntas es necesario tener soporte PHP. La solución HTML descrita en el artículo es con META porque es la única alternativa a usuarios que no tienen soporte de PHP (y evidentemente, tampoco de control sobre el servidor). Saludos,

GunMAN
15

Pues realmente buenísima la información Manz, no lo sabía, y yo siempre usaba el segundo método (Vía meta) y eso que tengo soporte PHP & MySQL en mi servidor. Realmente útil, felicidades, y gracias. Un saludo.

dehiv
24

@Manz: gracias por la ayuda, la verdad es que es un poco dificil de explicar (y el tema de las exp. regulares es un poco lioso).. a ver si puedo contarlo mas claramente para que se entienda: Tengo mi pagina antigua en html (antigua.html) y he creado una nueva, con el mismo contenido, pero en php (nueva.php). Además, ya que he hecho este cambio, voy a provechar para ademas, poder referenciarla mediante una url semantica (/nueva/). Para hacer esto necesito hacer 2 cosas: - una redireccion de antigua.html a /nueva/ - una reescritura para que /nueva/ se corresponda con nueva.php Lo que yo preguntaba es si esto se podía hacer en 1 solo paso (con una sola regla) o había que hacerlo en 2. La linea que tu pones (que es similar a la que yo he puesto) no soluciona el problema completamente: RewriteRule ^/(.+)/(.*)/?$ http://www.web.com/$1.php?param=$2 [L,R=301] Esto reescribe y también hace la redireccion 301 pero me cambiaría la url visible en el navegador, perdiendose la url semantica y mostrandose la url con los parametros. Por otro lado, esta regla no soluciona tampoco el problema de las antiguas paginas html, ya que no las afectaría. El mod_rewrite es todo un mundo... :-)

Manz
25

@dehiv: Lo que intentas realizar es muy sencillo, pero en pocos lugares se explica adecuadamente. En el mundo del modrewrite, si utilizas (en el segundo parametro del RewriteRule) una ruta absoluta, MR la cambiará de forma visible. Al contrario, si realizas una ruta relativa, MR no la hará visible. Entonces, lo que buscas posiblemente sea esto: RewriteRule ^/(.+)/(.*)/?$ /$1.php?param=$2 [L,R=301] Por otra parte, lo de unir varias reglas en una, en los "dominios" de ModRewrite, casi todo suele ser posible, eso si, hay que estructurarlo de una forma que sea posible juntarlo en uno. No te obsesiones tampoco con hacer una regla para todo. Muchas veces es más eficiente usar varias reglas sencillas, que una demasiado compleja. Eso si, pon especial atención en todos los "posibles" casos que se puedan dar. Efectivamente, todo un mundo...

dehiv
26

@Manz: si, creo finalmente pondré varias reglas. La verdad es que como he visto montones de ejemplos, y para obtener un mismo resultado se utilizan varios caminos distintos, al final uno acaba con mas dudas de las que tenía al principio. Una última duda de la regla que has puesto.: Tal y como dices, en este caso en particular la redirección sería 'no visible', al ser una ruta relativa.. Entonces, entiendo que el flag R=301 se podría quitar, ¿no? ya que aquí no quiero perder mi url semantica, solamente debo reescribirla internamente para que pueda ser interpretada. Uns aludo y gracias.

DEXTER | Wikital
29

Hola, excelente post, comenzaste poniendo ejemplos con blogs de blogspot.com pero al final no vi en ese post como hacer la redireccion 301 en un blog.blogspot.com yo estaba pensando crear otro blog en blogspot.com y ponerle el dominio viejo y desde hay hacer una redireccion 301 que se dirija al dominio nuevo, peo creo que no es buena idea para google podrias porfavor decirme como se hace la redireccion 301 en blogger

Seofilia
31

Hola, te dejo aquí una pregunta, ya que veo tienes un poco más claro que yo este panorama de las redirecciones 301, yo me hice mucho lio, intenté varias cosas y no consigo más que errores. Antes tenía una web con el dominio www.miweb.com.ar y ahora en un nuevo hosting registré www.miweb.com. En el nuevo hosting (www.miweb.com) agregué el viejo dominio como alias, y Google en estas dos semanas me ha tomado las 2 (dos) URL, quedando en riesgo de una posible penalización, y no quisiera que eso suceda. Qué código debería agregar en el .htaccess (teniendo en cuenta que uso WordPress) para que el dominio.com.ar antiguo se rediríja automáticamente al dominionuevo.com; sin afectar los enlaces viejos ni las demas cosas en Google, etc... Digamos, por la usabilidad los dos dominios funcionan, ya que el .com.ar viejo es un alias del dominionuevo.com; pero de forma técnica es poco correcto dejarlo así. Te pido tu ayuda, agradeceré cualquier respuesta. PD: me he suscribido a las respuestas por cualquier novedad, y sino puedes escribirme por e-mail. Espero haberme explicado claramente. Desde ya, muy agradecido.

Viajar barato
32

He realizado lo que comentas en este post para pasar mi blog de http://presupuestocero.blogspot.com a http://www.presupuestocero.es. Como podrás comprobar ya tengo todos los articulos y categorias creadas en el nuevo blog y ademas he configurado los permalinks de wordpress para que sean como los de blogger. El problema que tengo es… ¿como hago la redirección 301 en blogger? ¿como hago para que un post en concreto del blog antiguo redireccione a la nueva ubicación de ese post?

Corrales
33

Hola eme! cuanto tardan en redireccionarte la web por el metodo de editar en .htaccess. Si lo entendi bien, solo tengo que entrar en el archivo .htaccess de la web que quiero direccionar y escribir Redirect 301 / http://www.nuevaurl.com/. Un saludo.

mjmar82
37

Hola MANZ, a ver si me puedes echar una mano... he visto que controlas muy bien el tema del redireccionamiento....Necesito realizar una redirección de un dominio a una IP de una máquina, pero me gustaría que en el navegador se quedara el dominio y no se viera esa IP. ¿ cómo podría hacerlo por programación? Muchas Gracias

Luciano
40

¡Qué tonto que soy! ¿Cómo no se me ocurrió esto? Antes de ayer tuve que hacer eso y puse una etiqueta , pero claro, en IE no funcionaba (IE8), y además se perdía más tiempo. Usando PHP lo hace en un santiamén. No usé el otro método que porpusiste porque simplemente redirigía una página de Facebook, Twitter y Flickr, para hacerlo más institucional al asunto: www.midominio.com/facebook/, etcétera. ¡Gracias!

Alexander
42

Muchas gracias por la informacion, me parece muy importante el tema de la redireccion sobre todo al hacer cambio de dominios. Saludos cordiales.

Ronald
45

Me cambie de http://midominio.blogspot.com a midominio.com (comprado de godaddy) y mis visitas bajaron mas del 80% quiero saber si alguien me puede ayudar a recuperar mis visitas ya que en la web encontre lo de la REDIRECCION 301 pero nose como usarla porque uso blogger .. ayuda plizzzzzzz =)

  • -1
Maica
50

Muchas gracias por la información. Me ha sido de gran ayuda. He trasladado mi antigua web de pago a un blog gratuito y he redireccionado el dominio con la solución que dabas del .htacess y funciona perfectamente. Me surge una duda que no se si serías tan amable de contestarme, mi dominio caduca dentro de 2 meses y quisiera saber que debería hacer para que al pasar a la nueva dirección de blogspot sea penalizado lo menos posible, además no se si tendría que ir notificando uno por uno el cambio a todas las personas que tienen incluido mi enlace anterior para que pongan el nuevo. Un saludo.

1 2

Publica tu opinión