Como hacer una redireccion 301 desde el .htaccess

Existen cientos y miles de artículos en blogs publicados por Internet en los que explican cómo realizar una redirección 301 mediante el .htaccess, aunque en muy pocos casos explican en qué casos realizar cada tipo de redirección 301.
Normalmente las redirecciones son temas “complicados”, sobre todo cuando hablamos de redirecciones 301 aplicadas al SEO, ya que un parámetro mal puesto en el .htaccess puede provocar una penalización por contenido duplicado o un problema bastante difícil de solucionar si no estamos acostumbrados a la sintaxis del .htaccess.

redireccion 301

Vamos a explicar tres redirecciones 301 en .htaccess para tres casos completamente diferentes, debes usar uno u otro dependiendo de las circunstancias.

 

REDIRECCION 301 PARA CAMBIOS DE DOMINIO

En el caso de un cambio de dominio normalmente queremos mantener la estructura de enlaces después de la redirección, es decir, que se mantengan las URL: si el visitante entra por dominiodejemploantiguo.es/blog/como-crear-un-blog lo lleve mediante un 301 a dominiodejemplonuevo.es/blog/como-crear-un-blog.

Esta sintaxis crea una redirección perfecta para utilizar en cambios de dominio donde interesa conservar la estructura de enlaces.

 

REDIRECCION 301 DE TODO EL TRÁFICO A LA HOME

Si quieres redireccionar todo el tráfico que entra al dominio a la raíz o página inicial de otro dominio tienes que usar una línea parecida a la del caso anterior, pero sin el comodín al final:

Esta redirección se suele utilizar en temas de SEO cuando se quiere transferir toda la fuerza de un dominio a la página principal de otro dominio, esta es una redirección que debe realizarse con cuidado, ya que si se hace mal puede tener efectos adversos en el SEO.

 

REDIRECCION 301 DE UNA URL A UN DOMINIO NUEVO

Este caso suele ser el menos utilizado, ya que es bastante concreto y en pocas ocasiones se suele utilizar, se trata de redireccionar una URL dentro del sitio web actual a otro dominio usando la sintaxis del archivo .htaccess.

Personalmente hemos usado esta redirección cuando queremos separar un blog integrado en la URL principal a un subdominio o a otro dominio completamente diferente.

 

REDIRIGIR DOMINIO SIN ‘WWW’

 

REDIRIGIR DOMINIO CON ‘WWW’

Share on twitter
Compartir en Twitter
Share on facebook
Compartir en Facebook
Share on pinterest
Compartir en Pinterest

Tenemos 50 comentarios en

"Como hacer una redireccion 301 desde el .htaccess"

50 respuestas

  1. Hola Álvaro un buen post para explicarlo porque es tema complicado y no se encuentran muchas entradas que hablen de ello. Gracias.

  2. Fuera interesante un tutorial vuestro para redireccionar de http a https, hay mucha info en la red pero cada quien habla una cosa diferente y es un auténtico mareo. Ojalá los pudierais hacer vosotros.

  3. Buena recopilación Álvaro. Había mucho caos con esto y lo has ordenado perfecto. Nos lo quedamos como Cheat Sheet del 301 para nuestras páginas web.

      1. Hola Alvaro. Perdón por escribir aquí pero tengo una duda y me gustaría que me ayudes. La primera es si hay que escribir en el htaccess del dominio viejo, verdad? Yo quiero hacer un cambio de dominio completo así que usaré esta según tu ejemplo:

        redirectMatch 301 ^(.*)$ http://dominiodeejemplo.com$1
        Ahí debo poner el dominio nuevo, cierto? también van el $1 del final?
        Saludos y gracias

  4. Hola compañero, una consulta sobre las redirecciones 301. Una vez que genero una redirección, tengo entendido que la fuerza de posicionamiento dura unos 3 meses para que se haga efectiva. Después de ese tiempo, se puede borrar la redirección o se debe dejar permanentemente escrita?, ya que en mi caso tengo un plugin que hace eso y tengo como 100 urls y si sigo acumulando más, aparentemente se pierde link juice y relevancia en los buscadores, ¿Puede que sea así, o al cabo de un tiempo se puede borrar? Un saludo y buen post!

      1. Eh compañero, buen dato pero me cuesta entender, me dices que los enlaces deben seguir llegando desde la url vieja segun entiendo, pero como se mide eso? Hay un programa? Un saludo!

  5. Buenos días
    ¿Si queremos hacer varias redirecciones ponemos cada comando por separado o podemos condensarlos en una solo linea?

    En mi caso quiero quitar las www y además ya tengo una redirección para quitar la fecha de las URL.

    Por cierto
    ¿dónde es mejor poner estos fragmentos en el archivo .htaccess? Al principio? al final?

    Gracias

    1. Hola, Óscar.

      Nada te impide “condensar”, como dices, pero ten cuidado porque la sintáxis puede cambiar. Dime exactamente qué quieres hacer y te pongo un ejemplo.

      Respecto a los fragmentos: da igual si es al principio o al final, pero nota que el archivo se va a leer de arriba a abajo. Si se encuentra una redirección al principio, ésta se aplica y puede hacer que las de abajo no se ejecuten. Por eso ten siempre presente el orden en el que las pones.

      Un saludo.

  6. Hola Álvaro, felicidades por ser el 1º en la busqueda de 301 :). Leyendo el post, me falta un tipo de redirección que es la que buscaba. Como rediriges de una url a otra url del mismo dominio?.

    1. Hola, Marcelo:

      muchas gracias por tus ánimos. Intentamos hacer contenido de calidad para que las cosas posicionen 🙂

      Respecto a tu pregunta: puedes usar el mismo método descrito ahí arriba si necesitas hacer una redirección, aunque sea interna. No hay nada de malo en ello.

      También puedes hacerlo utilizando algo como esto:

      RewriteEngine On
      RewriteBase /
      RewriteRule origen_redireccion /destino_redireccion [R=301,L]

      También puedes utilizar la siguiente sintáxis:

      Redirect 301 /pagina_antigua /nueva_pagina

      No hay ventajas ni inconvenientes significantes en una u otra, así que, usa la que más te guste.

      ¡Un saludo!

  7. BUENAS ALVARO:
    que opción es la que tengo que escoger si lo que me han hecho en el hosting es instalar un certificado SSL, y no he cambiado de dominio, sino paso de http a https. Muchas gracias por anticipado.

  8. Tengo errores que se repiten, redireccionamientos 301 desde / p = ?? No sé si puedo eliminarlos, y muchos errores 404 de url domain.com/ language /wp-json/oembed/1.0/embed?_ _ _ _

    me gustaría poder crear una redireccionamiento único de todo lo que contenga en /?p=(*) o /(*)/wp-json/oembed/1.0/

    1. Hola, Ricardo:

      los redireccionamientos 301 desde “?p=” son normales, puesto que esas son las “URLs no amigables” de WordPress. Si ves muchas como esa es que alguien accede a tu página mediante éste tipo de enlaces.

      Los de “embed” es que alguien está intentando incrustar contenido de ese dominio. Entiendo que has cambiado “domain.com” por el tuyo, ¿no?

      Los redireccionamientos de “?p” no te recomiendo cambiarlos por lo que ya te expliqué. Los del embed harían que la gente no pueda incrustar tu página en las suyas (generando así el enlace con la miniatura de tu post). ¿Es lo que quieres?

      Un saludo.

  9. Hola, quiero hacer esto pero no se como, lo que pasa es le he agregado una palabra a todos los url de los articulos dentro de mi pagina y ahora todas la url que esta en el buscador de google llevar a mi pagina error.

    mi pagina estaba asi antes ejemplo:: http://dominio. com/imagenes/perros-1 y yo la cambie a
    http://dominio. com/imagenes/mira-los-perros-1

    la parte donde dice perros seria el titulo de mi articulo y el 1 es el id eso siempre va a cambiar pero nose que colocar dentro de mi .htaccess

    1. Hola, Yordis:

      Si me das más detalles intento ayudarte. ¿Cómo eran tus URLs y qué palabra le las añadido?, ¿se la añadiste delante o detrás?

      Un saludo.

  10. Buenas Alvaro, muchas gracias desde Brasil!

    Pero tuve un pequeño problema, a ver si puedes ayudarme =D

    para el dominio tengo un dominio por completo que me gustaria hacer el redirect… hice un cambio de branding y consecuentemente quiero aprovechar el legado SEO.

    Tengo en el htacces lo que recomendaste

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

    Pero lo que está sucediendo, que URLs antiguas de páginas no aplican el redirect si llevan el https.

    1. Hola, Lucas:

      Sin ver tu “.htaccess” imagino que el problema es que tienes varias redirecciones en él, siendo una de ellas la del “https”.

      Asegúrate de que las redirecciones 301 figuran en la parte superior del archivo; cuanto antes estén, mejor. De no hacerlo así puede suceder que otra redirección se ejecute con más prioridad y no aplique la siguiente correctamente.

      Un saludo.

      1. Hola Héctor…

        Intentaré poner aqui lo que tengo configurado y cual es la URL que no redirecciona. =D

        redirectMatch 301 ^(.*)$ https://liveseo.com.br

        Eso fue un cambio de dominio, actualmente tengo este URL que no me redirecciona:

        https://www. apdweb.com.br/curso -presencial-em-maringa/ (dejé con espacio para no hacer link)

        Me dices que tendria que hacer otros redirects antes?

        Gracias desde ya… sois unos monstruos!

        Una observación, no tengo nada más que lo de arriba en el Hatccess

        1. Hola, Lucas:

          A mi me funciona correctamente la redirección. Eso sí: hay un aviso de certificado que es necesario aceptar antes de que se realice.

          Si el problema al que te refieres es el del certificado, lo que tienes que hacer es generar uno válido ya que, de lo contrario, el navegador te mostrará el aviso de que tiene algo mal.

          Este paso no puede evitarse si la conexión es por SSL, ya que, para saber el navegador que ha de hacer una redirección primero ha de conectarse al servidor y para ello es necesario validar la conexión SSL, que no puede validarse sin consentimiento del usuario al estar mal el certificado.

          Un saludo.

  11. Hola, me gustaría hacer una consulta. Quiero hacer una redirección de dominio, ya que la web actual tiene un subdominio y quiero ponerle un dominio propio. La web no se va a mover del hosting, solo va a cambiar el dominio. La redirección se pondría en el .htaccess original o tendría que crear un nuevo apartado en el hosting para el antiguo subdominio, donde poner la redirección en su .htaccess??
    Un saludo y muchas gracias por toda esta información.

    1. Hola, Antonio:

      La redirección debería crearse en el .htaccess asociado al directorio del antiguo subdominio.

      ¡Un saludo!

  12. Hola Alvaro, primero enhorabuena por el artículo, muy completo y bien explicado.
    Tengo una caso de redirección 301 que no esta en el artículo y no sé cómo hacerlo… quizás puedas ayudarme.
    Los links en mi versión amp (ofrecida desde google) me dirigen a https://amp.miweb.com/url-e…..
    Esto pasa cuando es google el que ofrece mi versión amp, yo hago pruebas y cuando la ofrezco yo desde mi servidor los links van bien a https://amp.miweb.com/url-e
    ¿Cómo hago la redirección desde mi htaccess para que todas esas webs con la coletilla sean redirigidas a sus respectivas urls correctas?.
    En todos los links me pasa lo mismo, me llevan a la url correcta más la coletilla q parece que agrega google
    Saludos y gracias

    1. Hola, Javier:

      Lo más probable es que tengas algún javascript de analítica que esté añadiendo esos campos al final cuando Google entra en tu web.

      Sería bueno localizarlo y arreglarlo, pero si necesitas una redirección tendrías que hacer algo parecido a esto (no puedo dártela exacta sin tener las URLs):

      RewriteRule ^url-ejemplo.html.*$ /url-ejemplo.html [L,R=301,QSD]

      Un saludo.

  13. Hola Alvaro,

    Soy cliente vuestro, quiero redirigir el dominio principal a una carpeta para que muestre otra web (Que está en esa carpeta). Tengo la redirección por el Cpanel “redirige” y con htaccess y no redirige la web, ¿Puedes decirme como solucionarlo?

    Gracias.
    Un saludo

  14. Hola Alvaro , queria hacer una pregunta quiero redirigir un dominio completo con todo el contenido a otro dominio que ya tiene contenido y quiero que el contenido del viejo dominio se agregue al nuevo dominio , la pregunta es
    Esto se hace automaticamente escribiendo esas lineas de codigo en el hthacces o yo debo crear los articulos en la nueva pagina ?
    Es decir yo tengo un post posicionado en el antiguo dominio , cuando el usuario entre en el va a ir al mismo articulo pero en el dominio nuevo ? eso no entiendo gracias

    1. Hola, Laura:

      Si el contenido no existe en el nuevo dominio, pero quieres conservarlo, será necesario que lo crees otra vez en el nuevo dominio.

      Un saludo.

  15. beunas alvaro, como podria solucionar este error

    ¡Cuidado! No ha configurado una redirección 301 para enviar tráfico a su dominio preferido. Si las versiones con www. y sin www. cargan correctamente ¡es contenido duplicado!

    1. Hola, Hernan:

      para solucionar ese error tienes que redirigir el “www.tudominio” a “tudominio.com“, o viceversa.

      Te dejo aquí un artículo que explica cómo hacer redirecciones en tu archivo .htaccess.

      Cualquier cosa nos dices.

      Un saludo.

  16. Estimado Alvaro, soy de Chile y nuevo en esto, quisiera ver la posibilidad si puedes ayudarme, tengo un sitio nuevo y cada vez que consulto me arroja este error
    “For search bots website addresses with www and without it are considered as different pages. Adding redirection help you avoid double content panelty.”

    He probado combinaciones que sugieres en este apartado y aún así persiste .
    Alguna otra que pueda probar ?
    Muy agradecido

    1. Hola, Cristhian:

      eso es que necesitas una redirección de “www” a “sin www”, o viceversa.

      Al final del artículo tienes las dos redirecciones para que puedas copiar y pegar, son las que se llaman “REDIRIGIR DOMINIO CON ‘WWW’” y “REDIRIGIR DOMINIO SIN ‘WWW’”.

      Si no te funcionan, revisa que las hayas copiado bien, que estén en el archivo “.htaccess” correcto (normalmente la carpeta raíz de tu página web) y que las directivas pegadas estén justo al principio del archivo.

      ¡Un saludo!

  17. Hola Alvaro,
    Antes de nada muchas gracias por tu blog y para esta entrada.
    No consigo solucionar este problema que me devuelve un sito que analiza mi portal.

    “¡Cuidado! No ha configurado una redirección 301 para enviar tráfico a su dominio preferido. Si las versiones con www. y sin www. cargan correctamente ¡es contenido duplicado!”

    Entonces he modificado el .htaccess tal y como has comentado tu. He usado “REDIRIGIR DOMINIO CON ‘WWW’” porque el otro no me funciona. Así es el cambio que he añadido al final del fichero (de un portal WordPress)

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

    Pero parece que no haya cambiado nada.
    Podría écharme un cable, por favor?

    Si hace falta te paso el dominio de la web, pero no quiero hacer spam.
    Muchas gracias!

    1. Hola, Paolo:

      En principio lo veo bien. Dame el dominio y le echo un vistazo, no te preocupes por el spam que ya lo edito en tu comentario antes de que se haga público para que no se desvele.

      Un saludo.

    1. Hola, Manu:

      las del archivo .htaccess son gestionadas por el servidor web y por ende suelen ser más rápidas de procesar.

      Las generadas por el CMS se gestionan a nivel de aplicación y, si bien son más lentas, pueden tener en cuenta otro tipo de lógica a nivel de aplicación (p.ej.: “redirecciona solo si el usuario no se ha identificado”).

      Un saludo.

  18. Hola Álvaro, magnifico post.
    Para redirigir un dominio expirado a la home o url concreta de mi web ¿como se haría?
    Actualmente lo hago con el plugin 404page para crear una pagina de error personalizada.
    Además todos los enlaces que consigo del dominio expirado son “nofollow” ¿es normal?
    Saludos.

    1. Hola Francisco, posiblemente el nofollow lo meta el plugin 404page, ya que a los 404 normalmente si que se les mete nofollow.

      Para redireccionar, debes hacerlo con comodines: https://www.inboundcycle.co

      En ese post, justo la seccion “Mover un dominio completo”.

  19. Hola Alvaro, gracias por tu aporte.
    Te cuento mi caso concreto he comprado algún dominio expirado y la idea es hacer una 301 a una url específica de otro dominio.Hasta ahora lo he hecho desde el hosting pero lo que pasa es.
    1º El dominio destino coge el link pero como no follow.
    2ª Cuando entro a algún enlace del dominio expirado y pincho en el anchor text no carga la página destino, para ver si funciona la redirección.
    Esto se podría solucionar con archivo .htaccess??

    1. Bufff, pues es la primera vez que veo un caso así, no hay razón para que cargue un Nofollow.

      Y sobre el punto dos, es porque tienes que hacer una redireccion con comodines en el .htaccess

  20. Hola Álvaro, enhorabuena por el post, muy completo 🙂

    Tengo una duda sobre una serie de redirecciones que no consigo solucionar, a ver si tú me puedes ayudar…

    Quiero redireccionar todas las URLs de un site que acaben en p.ej. %terminacion01 para que terminen en %terminacion02 y tengo muchas URL:
    https://www.ejemplo.com/%terminacion01
    https://www.ejemplo.com/blog/%terminacion01
    https://www.ejemplo.com/tienda/%terminacion01
    https://www.ejemplo.com/Tienda/producto/camiseta-verde%terminacion01
    – etc.

    No sé si me explico… Querría que todas las anteriores redirigieran a lo mismo pero terminado en %terminacion02

    Sé que existe una instrucción para redireccionar un dominio sin perder la estructura: redirectMatch 301 ^(.*)$ http://dominiodeejemplo.com$1

    ¿¿Existe algo así como un “redirect 301 ^(.*)%terminacion01 https://www.ejemplo.com/$%terminacion02” que sirviese para mi caso??

    Muchas gracias!!

    1. Hola, Javier:

      sí, los comodines puedes usarlos en cualquier parte de la URL, así que si haces como dices debería funcionarte. No obstante, ten cuidado con los caracteres especiales (%, -, !, $, etc.) porque pueden ser reservados internamente por tu servicio web. Para hacer pruebas y descartar que no te funcionen a raíz de esos caracteres puedes sustituirlos por un simple “.” que se traduce como “cualquier caracter único”.

      ¡Un saludo!

      1. Hola Héctor, gracias por tu respuesta 😉

        Nada, he probado mil combinaciones de un « RedirectMatch 301 ^(.*)/%terminacion01 $1%terminacion02 », incluso sustituyendo caracteres raros por . como decías y no sucede nada. Quizá sea cosa del servicio web…

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Utilizamos cookies propias y de terceros para obtener información estadística, mostrar publicidad personalizada a través del análisis de tu navegación, así como para interactuar en redes sociales. Si continúas navegando, consideramos que aceptas nuestra Política de cookies. ACEPTAR

Aviso de cookies
covid19

#FrenarLaCurva