Cambio de URL redirección 301 con .htaccess

  • Por
Explicamos la manera de realizar una redirección tipo 301 (moved permanently) de una URL antigua a una nueva, utilizando el fichero .htaccess.
A veces nos vemos en la necesidad de cambiar las direcciones de nuestras páginas, porque hayamos realizado una reestructuración del sitio, una reprogramación o un cambio de dominio. No cabe duda que esto siempre es un engorro, lo mejor sería conservar las direcciones antiguas, que las conocen nuestros usuarios y están correctamente posicionadas en buscadores, pero en ocasiones no tenemos más remedio.

En esos casos, lo más adecuado es facilitar tanto a usuarios como motores de búsqueda la localización de las nuevas URLs que sustituyen a las viejas. Existen varias maneras de hacer esto, unas más adecuadas que otras, pero parece ser que, de cara a buscadores como Google, lo más adecuado es realizar una redirección 301 "moved permanently". Así les estamos informando que los contenidos han cambiado de localización permanentemente, de modo que los motores de búsqueda actualizarán las direcciones en sus bases de datos. De cara a los usuarios, con una redirección 301 sus navegadores cambiarán las URL por las nuevas de manera transparente para los usuarios, es decir, sin que tengan que hacer nada.

En este artículo veremos cómo realizar una redirección 301 ayudándonos del archivo htaccess de Apache.

Referencia: Tenemos algunas informaciones sobre .htaccess en DesarrolloWeb.com.

Editar htaccess para crear direcciones amigables
http://www.desarrolloweb.com/manuales/htaccess-para-urls-amigables.html

Manual de Apache
http://www.desarrolloweb.com/manuales/41/

Realizar una redirección 301 con htaccess es muy simple. Se puede hacer con una línea como esta en el archivo:

redirect 301 /url_antigua.html http://www.dominio-nuevo.com/url-nueva/

Como se ha visto, se lanza un comando redirect, tipo 301 y luego se indican tanto la url antigua como la nueva. La antigua simplemente se indica con la URL relativa al archivo .htaccess. La nueva URL se indica de manera absoluta, comenzando con http://.

También podemos hacer redirecciones en masa más complejas utilizando patrones. Si los patrones concuerdan, entonces se realiza la redirección.

Por ejemplo, si queremos que cualquier URL de un dominio se redirija a la portada o página raíz de otro dominio, podremos hacer esto:

redirectMatch 301 ^(.*)$ http://www.desarrolloweb.com

Esto, en un dominio llamado por ejemplo domantiguio.com, redireccionaría cualquier URL como http://domantiguo.com/loquesea/ a la URL http://www.desarrolloweb.com. O bien una URL como http://domantiguo.com/dir/otracosa.html se redirigiría a http://www.desarrolloweb.com.

Ahora, si deseamos hacer una redirección de una URL de un dominio a la misma URL, pero en otro dominio, podríamos hacer algo como esto:

redirectMatch 301 ^(.*)$ http://www.desarrolloweb.com$1

Esto redirigiría algo como http://domantiguo.com/loquesea/ a la URL http://www.desarrolloweb.com/loquesea. Una URL como http://domantiguo.com/dir/otracosa.html la redirigiría a http://www.desarrolloweb.com/dir/otracosa.html.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

Tomas

19/12/2006

Mucho cuidado con los redireccionamientos y Google ¡¡

Google considera una practica fraudulenta, hacer un redireccionamiento directo desde una antigua URL a una nueva. Yo lo hice con un antiguo dominio mio y me llegaro a yamar por telefono los de Google españa, amenazandome con quitarme del directorio (la nueva web por supuesto)

Esto tiene logica, ya que google siempre piensa en la persona que busca. Si colocas unas palabras claves en el buscador, google generara un resultado y si al entrar en ellos, nos redirijen hacia otra pagina. el buscador entiende que lo estas tratando de engañar o que otro dominio (el nuevo) esta rtando de apoderarse de las posiciones de otro.

Segun me dijeron del propio Google españa (en realidad era una empresa que trabaja para ellos rastreando posibles fraudes) la forma de proceder correctamente cuando queremos desviar una pagina de un dominio antiguo a uno nuevo, es colocar una pagina de aviso que el sitio ha cambiado de direccion y colocar un boton que nos lleve a esa nueva pagina y pedir al usuario que haga clic en este.

Tomas Cabrera

Homero

23/1/2008
Es verdad lo que dice esta persona Tomas Cabrera?

a mi me suena a cuento...

Roni

07/1/2009
Existe alguna manera de hacer una redireccion por htaccess pero por paginas distintas ?
Por ejemplo tengo los dominios www.a.com y www.b.com
pero los 2 caen en la misma carpeta .. hay alguna forma de por medio de htaccess redireccion a.com a un lado y b.com a otro ?
Gracias :)

david

01/10/2009
Me fue de utilidad
soy el webmaster de exgoe.com y blogdewindows.com

ahora he usado la redireccion 301 en el sitio blogdewindows.com

redirectMatch 301 ^(.*)$ http://exgoe.com$1

solo como sugerencia te falto añadir que cualquiera de las maneras de usar redireccion 301 solo se hacen abriedo un bloc de notas y luego ponerle el tipo de redireccion que nos interesa en mi caso
redirectMatch 301 ^(.*)$ http://exgoe.com$1

y a final guardar el archivo con la extencion y nombre .htaccess

finalmente lo subi por via FTP al directorio raiz

de cualquier manera gracias me fue de mucha utilidad y agradecer no cuesta nada

Rodrigo

02/10/2009
Google no tiene problema con 301
Lo de Tomas Cabrera es una basofia, o esta mintiendo o le tomaron el pelo. Si fuera así Google no publicaría esta artículo

http://www.google.com/support/webmasters/bin/answer.py?hl=en&answer=93633

Saludos

Chach

17/10/2009
venga
asi que te lalmaron de google para comprobar tu redirección?
Mira, me pasó algo parecido.
A mi me llamo Bill Gates para que usara bien el bloc de notas. Ahora lo hago mucho mejor. Hala, que disfrutes con tus intervenciones en los foros. Te auguro un gran futuro como saxofonista (Tola)

Karim Homsi

11/3/2010
Url canonica-varios dominios un solo alojamiento-url rewriting
Hola, yo tengo una pregunta para Miguel Angel Alvarez u otra persona que conozca bien la materia;
Tengo un hosting con un dominio principal (www.mi-sitio-principal.com) al cual tengo agregados dos otros (parked domains) por ejemplo: www.sitio-A.com y
www.sitio-B.com
En www.mi-sitio-principal.com tengo un archivo .htaccess con el sig. codigo para url canonica:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.mi-sitio-principal.com [NC]
RewriteRule (.*) http://www.mi-sitio-principal.com/$1 [QSA,R=301,L]

El problema que con este codigo mis otros dos dominios son automaticamente redireccionados a www.mi-sitio-principal.com
Mi pregunta:
Como puedo hacer para redireccionar mis otros dos dominios aparcados (parked) hacia las paginas, que yo deseo, de mi-sitio-principal.com, tomando en cuenta que no existen fisicamente en el repertorio (ya que son "aparcados" no tienen carpeta para colocarles a cada uno de ellos un archivo .htaccess que haga el redireccionamiento que necesito)?
Desde el "cPanel" de mi servidor puedo activar los redireccionamientos con un boton pero a condicion de antes suprimir el "htaccess" de mi-sitio-principal.com .
Esta ultima solucion, segun he leido, no es muy recomendada para los motores de busqueda; parece ser que lo ideal seria con un archivo .htaccess.
Le(s) agradezco mucho por su(s) respuesta(s) y consejos (espero haber sido suficientemente explicito) y tambien pido disculpas por la falta de acentos sobre algunas palabras, lo que pasa es que mi teclado no es español. Muchas Gracias.

Sebastian

12/7/2010
Redireccion A Un Post
hola y como hago para redirigir la pagina en cuestión y un articulo

David De la Sota Pineda

28/8/2010
Excelente Articulo
Después de algunos dias de busqueda me acorde de esta gran web que me saco de muchas dudas al inicio de mi carrera

Saludos

juan

28/9/2010
consulta sobre redireccion
buscando informacion de seo, encontre que:

"Cuidado! Tu página sin los WWW funcciona en paralelo a la página con los WWW!

Tu sitio Web escrito http://ejemplo.com.ar y http://www.ejemplo.com.ar no apuntan a la misma URL. Es un problema clave que tienes que resolver con prioridad!

Los Redireccionamientos 301 son importantes para que Google? no vaya pensando que tus websites con y sin los WWW son diferentes.

La estructura de tus URLs es clave para la optimización de tu sito web. Lee en detalle este articulo y este otroque describen el tema, y asegúrate que tu desarrollador cumple con las normas."

Alguien sabe algo al respecto, y por otro lado... tiene la forma correcta de aplicar esto en un htaccess? porque lo aplique por php pero google eso parece que no lo ve de forma correcta.

Saludos

Edgar

16/4/2011
Sobre redireccion
Hola Juan:

Lo que comentas es verdad, se denomina url canónica. Por ejemplo, las siguientes direcciones: www.tusitio.com, tusitio.com, tusitio.com/index.html, o www.tusitio.com/index.html a pesar de ser lo mismo pueden ser consideradas de forma distinta por el buscador y considerar que tienes 2, 3 o más páginas distintas con contenido duplicado, triplicado o multiplicado.

La solución es sencilla, puedes colocar lo siguiente en el archivo .htaccess:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{HTTP_HOST} !^www.tusitio.com
RewriteRule (.*) http://www.tusitio.com/$1 [R=301,L]

De esta forma, si alguien ingresa a tu sitio sin www automáticamente la url es reescrita con las www y no existe duplicación.

Sólo sustituye tusitio por el dominio correspondiente y si tu sitio no es .com pues pones .org, .net o cualquiera que sea la extensión.

Saludos.

Quique Cardona

22/6/2011
Redirect en htaccess
Cambié los permalinks hace un tiempo y los redirigi correctamente a nivel interno.
Ahora necesitaria hacer un Redirect 301 a traves de .htaccess para no perder los enlaces antiguos que me vienen de fuera y no perder PR.

Lo se hacer individualmente pero me gustaria saber si existe una manera de que se aplique en todos los links.

Este es un ejemplo:

Redirect 301 /2005/10/everest-nepal.html http://www.viajablog.com/everest-nepal/

Todos los enlaces antiguos y nuevos siguen la misma logica:

viejo: http://www.viajablog.com/año/mes/titulo-del-post.html
nuevo: http://www.viajablog.com/titulo-del-post/

Se podria hacer de una sola tirada y que funcione en todos los links antiguos sin tener que hacerlo uno por uno?

Gracias

arisan

01/8/2011
redireccion con el mismo puerto
hola, estoy realizando unas pruebas con 2 servidores que tengo webserver y mail server en diferentes equipos e ip 192.168.1.4 y 198.120.1.5, ambos servidores escuchan en el puerto 80, puedo cambiar de puerto a uno de ellos pero no quisiera que los usuarios tengan que escribir midominio.com:8080 o mail.midominio.com:8081. si no que solo escriban la url y que el direccionamiento sea transparente.
Se puede solucinar esto con .htaccess?
desde ya muchas gracias

diegoao

10/10/2011
Google recomienda 301
Google recomienda el 301 en sus herramientas para webmaster.

El 301 es facil de utilizar y nos da muchas facilidades.

usuario_borrado_773831

09/1/2012
La Redirección 301 no se penaliza en Google
Dado que la Redirección 301 es un aviso de "Redirección Permanente", nunca será penalizada por los Buscadores.

Un Saludo ! !

Fernando

15/2/2012
Redireccion de un directorio a la raiz del dominio
Estoy cambiando mi tienda del directorio: midominio/catalogo/ al directorio raiz: midominio.com/
No acabo de entender como debo hacer el redireccionamiento con el .htaccess.
Ya tengo algunas reglas para los mensajes de error y para las urls amigables y no se si esto puede interferir en el resto. Tengo por ejemplo esto:

# Urls amigables
Options +FollowSymLinks
RewriteEngine On

RewriteBase /catalogo/

RewriteRule ^(.*)-p-(.*).html$ product_info.php?products_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-c-(.*).html$ index.php?cPath=$2&%{QUERY_STRING}
RewriteRule ^(.*)-m-(.*).html$ index.php?manufacturers_id=$2&%{QUERY_STRING}

No se donde poner la regla para que las entradas a la direccion: midominio/catalogo/ se redirijan con 301 a: midominio.com/
Todo ello sin que deje de funcionar lo que ya tengo puesto para las urls amigables.

¿Me puede ayudar alguien?

Gracias.

VAKNeO

21/2/2012
redireccion 301
Yo tengo un problema, hice hace poco el redirecionamiento 301 del mismo dominio pero tenia una web distina i por lo tanto las rutas de las carpetas eran distintas

El problema esta en que antes la pagina era HTML entera y aora mi web es PHP con CSS y cuando tu accedes al link antiguo te muestra la web como si no tubiera CSS

Que puedo hacer ?

Victoria

29/5/2012
Y...
Y como se hace en el caso de querer apuntar varios dominios a uno en particular para generar más tráfico?, o sea: no cambiar de un dominio viejo a otro como bien explicas en el artículo, sino parkear varios dominios al principal àra de ese modo tener más entradas. Muchas gracias

pino

25/10/2012
redireccion 301
hola,comento mis dudas,tengo un dominio.com.ar alojado en 000.webhost.com alojamiento gratis,este dominio esta muy bien posicionado ,primero podria decir,pero pasa que en el momento de mayor trafico wbhost.com cierra el hostin y envia la pagina a su web de error,compre un domincio del mismo nombre pero .com en con alojamiento pago en otro hosting,pero no tiene buen posicionamiento,mi pregunta puedo en herramientas de webmaster hacer el redireccionamiento 301 del dominio .com.ar al nuevo dominio .com ya que tienen el mismo nombre,no perdere posicionamiento del dominio bien ubicado ?gracias
Saluda Atte pino

Cord12

30/10/2012
redireccionamiento 301
hola. Tengo un problema.

he hecho un redireccionamiento 301 a través de .htaccess. El tema está en que quiero quitar ese redireccionamiento, he quitado el .htaccess del directorio raiz y sigue saliendo la web que redireccioné. No vuelve a salir la antigua.

¿sabe alguien que tengo que hacer para que vuelva a salir la antigua??

Ricardo

17/11/2012
Me funcionó
Mira que hay comentarios colgados por Internet sobre redirect 301 , pues nada el ejemplo correcto estaba aquí ;-)

gracias,

Antonio

16/4/2013
????
hola:
estoy intentando redireccionar una pagina "www.aaaaaa.com.mx" a una creada en wordpress, y me gustaria saber en cual ftp o en cual raiz hago el cambio si en el de la pagina nueva o en la anterior...espero haberme explicado
el sitio que esta creado en wordprees lo tengo en un servidor local, tiene algo que ver?

saludos y gracias

Javier

30/10/2013
Redirección 301
Hola, muchas gracias de antemano por su ayuda, su artículo me ha sido de mucha utilidad pero todavía tengo un duda.

Tengo un alojamiento y 3 nombres de dominio, un principal miweb.com y otros dos miweb.net, miweb.es

La cuestión es que quiero redirigir esos dos dominios al principal, y con la redirección 301 en el .htaccess lo he conseguido tanto para el dominio con www como sin.

El problema viene en direcciones como por ejemplo miweb.es/pagina-prueba que al escribirla en el navegador no me redirecciona automáticamente a miweb.com/pagina-prueba

Este es el .htaccess que estoy usando:

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

RewriteCond %{HTTP_HOST} ^www.miweb.es$ [NC]
RewriteRule ^(.*)$ http://www.miweb.com/ [R=301,L]
RewriteCond %{HTTP_HOST} ^miweb.es$ [NC]
RewriteRule ^(.*)$ http://www.miweb.com/ [R=301,L]

RewriteCond %{HTTP_HOST} ^www.miweb.net$ [NC]
RewriteRule ^(.*)$ http://www.miweb.com/ [R=301,L]
RewriteCond %{HTTP_HOST} ^miweb.net$ [NC]
RewriteRule ^(.*)$ http://www.miweb.com/ [R=301,L]


# END WordPress

Espero puedan ayudarme y cualquier duda consúltenme

Un saludo :))

cesar a

10/12/2013
Lo de tomas Cabrera
Tomas, te creo sobre lo de la empresa, lo que no creo es que sea de una empresa contratada por google para detectar fraudes. Creo que es una empresa para testear boludos......
Seguramente vos estas en el top de su ranking

Pedro

02/3/2014
Que mania de no contarlo todo
Es la 8ª web que visito buscando como hacer una redireccion 301 y todos os quedais en la linea que hay que escribir. Pero NUNCA decis donde hay que ponerla. Decis en el archivo .htaccees y lo dejais ahi.
Cuando alguien pregunta una cosa asi de basica, es porque no sabe mucho. Yo estoy en ese caso. Me pongo a abrir el archivo .htaccees y veo un monton de cosas escritas ¿Donde se pone???? Porque yo lo he puesto en varios sitios y no funciona. Y la linea de texto está bien seguro, porque eso si que lo decis todos como hacerlo.
Por que dais por sentado que la gente vamos a saber donde está ese archivo, donde hay que pegar esa linea de texto con nuestras dos paginas??

Ni que fuera de lo mas intuitivo saber donde va

Agustin

18/3/2014
Redireccionamiento 301
Muy buenas
He cambiado recientemente de sevidor pero sigo con el mismo dominio y ahora tengo algún problemilla con el posicionamiento y he perdido bastante. la antigua web estaba hecha con html y ahora siguen apareciendo paginas y algun codigo como este:
File(/usr/home/miweb.es/web/wp-content/cache/supercache/miweb.es/index.html/) is not within the allowed path(s): (/usr/home/miweb.es/:/home/morenglish.es/:/usr/home/services/) in /usr/home/miweb.es/web/wp-content/plugins/wp-super-cache/wp-cache-phase1.php on line 592
Cuendo pincho en antiguos link. En la barra de google pone: miweb.es/index.html
Puse un direccionamiento como este en el htaccess;
RewriteEngine on
RewriteCond %{HTTP_HOST} ^tudominio.es$ [OR]
RewriteCond %{HTTP_HOST} ^www.tunuevodominio.es$
RewriteRule ^$ http://www.tunuevoyexcelentedominio.es [R=301,L]
Y me dijo que estaba saturados de direccionamiento cosa que no entiendo . Entonces lo que hice fue quitar las www en las bbdd de wordpress directamente pero claro este no es el problema del direccionamiento. Que código pongo en el htaccess para solucionarlo?
Grscias

Mario M

05/8/2015
Ayuda con mi web
Hola , he buscado de muchas forma pero, parece que no encuentro o no me queda claro lo de los archivos .htaccess

Contrate un servicio de host y quite mi dominio de blogger para usarlo con mi nuevo servicio de host, con este nuevo host realice un redireccionamiento y dentro del host genero un .htaccess, asi :

RewriteEngine on
RewriteCond %{HTTP_HOST} ^midominio$ [OR]
RewriteCond %{HTTP_HOST} ^midominio$
RewriteRule ^/?$ "http://miblog.blogspot.com" [R=301,L]

Lo que quiero es , tener lo que tenia con goddady antes de este otro servicio, goddady me redireccionaba y me ocultaba la url de blogspot, también le ponía un titulo a mi web y nadie se daba cuenta que era blogspot y en los buscadores salia la información de masking que se ponía en godaddy, ¿como puedo hacer esto ?

Gracias

Daniel

25/8/2015
Redireccion
¿Cómo hago si tengo varios dominios y quiero apuntarlos todos a uno principal usando el archivo .htaccess?

JoanMS

05/9/2015
No consigo hacer la redirección de mis antiguas URL
Hola, gracias por el excelente post!
He probado lo que indicas, pero no consigo hacer las redirecciones de mi antigua web.
Tengo casi 800 url que han dejado de funcionar con el cambio que hemos realizado recientemente, la antigua web la hemos movido a una nueva carpeta, pero no consigo que las antiguas URL se redireccionen a la nueva carpeta, te pongo in ejemplo:

URL Antigua (NO LLEVA AL SITIO CIRRECTO): http://carrotcomedy.com/index.php/?qa=282/hormiguero-convierte-caloret-rita-barber%C3%A1-una-canci%C3%B3n-00-02&show=282#q282

URL a la nueva carpeta (SI LLEVA AL SITIO CIRRECTO): http://carrotcomedy.com/index.php/cc/?qa=282/hormiguero-convierte-caloret-rita-barber%C3%A1-una-canci%C3%B3n-00-02&show=282#q282

He intentado esto, pero no me funciona:

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Redirect 301 /index.php?qa=282/hormiguero-convierte-caloret-rita-barber%C3%A1-una-canci%C3%B3n-00-02&show=282#q282 http://carrotcomedy.com/index.php/cc/?qa=282/hormiguero-convierte-caloret-rita-barber%C3%A1-una-canci%C3%B3n-00-02&show=282#q282

# END WordPress

Alguien me puede ayudar?
Muchas gracias,
Joan