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:
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.
¡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.
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).
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?
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.
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.
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.
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.
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
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 ;)
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.
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).
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.
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:
@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.
@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.
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.
@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.
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
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.
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?
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.
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.
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
¡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.
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???....
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 =)
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.