Credit image

¿Te gusta el diseño web? ¡Echa un vistazo a la documentación de LenguajeCSS.com!

Redirección 301: Cambiando de URL

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.

Escrito por Manz, el , en posicionamiento. Comentarios recibidos: 58.

58 comentarios de lectores
flix
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
Shock
Shock
2

Aiya! Muy bueno, te la voy a menear .

  • 1
aj2r
aj2r
3

Joer, la de veces qeu he cambiado de web y nunca se me ocurrió. Gracias por el recordatorio :D

  • -1
yuip
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
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
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
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
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
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
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
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
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
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,

DiseñoGeek
DiseñoGeek
14

Osea, en Blogger definitivamente no se puede?

GunMAN
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.

aca463
aca463
16

Muchas gracias Manz! Me habéis sacado de un buen apuro. Saludos!

Emilio
Emilio
17

Hola a todos, Me gustaria poder redirigir en forma permanente (301) mediante .htacess usando algun patron para extraer un directorio en el medio de todas las urls de mi sitio: EJM: http://www.misitio.com/dir1/dir2/dir3/paginas a http://www.misitio.com/dir1/dir3/paginas ¿Alguna sugerencia? Saludos

Angelfire
Angelfire
18

Creo que te falto el método más limpio, mediante htaccess.

Manz
Manz
19

@Angelfire: Cierto, lo he añadido.

dehiv
dehiv
20

Muy interesantes los consejos, pero tengo una duda: ¿Que pasaría cuando además de hacer una redirección 301, quieres utilizar urls semanticas? ¿se podría hacer todo de 1 vez? Es decir.. pasar de una pagina antigua: http://www.web.com/antigua.html a una nueva: http://www.web.com/nueva/ (que en realidad sería nueva.php)

Manz
Manz
21

@dehiv: Efectivamente, la opción modrewrite con redirección 301 te lo permite. Puedes echar un vistazo a la chuleta de modrewrite si quieres más información.

dehiv
dehiv
22

@Manz: ya había visto la chuleta (que por cierto es muy util) pero según lo que entiendo, como mucho podría hacer algo de este tipo: RewriteRule ^/nueva/(.*)/$ http://www.web.com/nueva.php?param=$1 [L,R=301] lo que funcionaria bien para la página nueva.php.. pero no afectaría a antigua.html que seguiría enlazando con la página antigua.

Manz
Manz
23

@dehiv: Entonces quizás lo que necesitas es una introducción a las expresiones regulares. No entiendo muy bien lo que necesitas en tu comentario, pero algunos ejemplos son los siguientes: RewriteRule ^/(.+)/(.*)/?$ http://www.web.com/$1.php?param=$2 [L,R=301] RewriteRule ^/(nueva|antigua)/(.*)/?$ http://www.web.com/$1.php?param=$2 [L,R=301]

dehiv
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
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
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.

Manz
Manz
27

@dehiv: Correcto, el 301 sería sólo para las URLs "visibles".

Plaga
Plaga
28

Excelente post :D Acabo de hacer la redirección de mi blog En el archivo .htaccess puse esto y listo :D Redirect 301 /blog http://plagablog.com

DEXTER | Wikital
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

DEXTER | Wikital
DEXTER | Wikital
30

disculpa habia olvidado suscribirme a los comentarios via email, ya esta!

Seofilia
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
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
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.

martin
martin
34

Excelente lo de la redireccion 301! La puse en el htaccess y me ha traido todo el trafico. Gracias!

eassistenzalegale
eassistenzalegale
35

Muy útil el artículo, tomaré nota. Gracias.

carlos novas
carlos novas
36

Saludos amigo acabo de cambiar de hosting y quisiera que me confirmaras si esta bien esta redireccion que puse en la pagina antigua www.cnovam.com hacia http://cnovam.50webs.com Redirect 301 / http://cnovam.50webs.com/ espero tu respuesta no quisiera bajar de posición en google y tampoco problemas gracias Saludos.

mjmar82
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

FABIO APONTE
FABIO APONTE
38

me parece una magnifica herramienta

williams rodrigue
williams rodrigue
39

Excelente informacion muy util, gracias por el aporte...

Luciano
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!

Luciano
Luciano
41

Epa. Te está funcionando mal el código para identificar los navegadores. Tengo el Opera 10.53. Opera rules! :P

Alexander
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.

nudier
nudier
43

Muy buena explicacion, gracias

abogados
abogados
44

si no se tiene acceso al servidor para modificar mi dominio y quiero que http://ejemplo.com redireccione a http://www.ejemplo.com.ar, como puedo hacer???....

Ronald
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
Riccard
Riccard
46

Hola, Si se optimizan las urls de una web ¿Hay que utilizar una redireccionamiento 301? Saludos

Ernest
Ernest
47

Excelente post, muy detallada la información y me vino como anillo al dedo. Muchas gracias

juan - peliculas
juan - peliculas
48

muchas gracias por el dato hermano realmente queria hacer esto con mi pagina desde hace tiempo

eduardo
eduardo
49

Es un poco antiguo ya el artículo, pero ha sido muy ilustrativo para mi. Bien explicado. Gracias

Maica
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

Si lo deseas, puedes utilizar el siguiente formulario para publicar tu opinión o responder a alguna de las existentes:

Previsualización

Aquí se previsualizará su comentario. Revise que sea correcto antes de publicarlo.