¿Cómo hacer redirects 301?


Hace unos días nos preguntaron vía twitter «¿Cómo se pueden hacer las redirecciones cuando se cambiamos un dominio?» y vamos a intentar explicar en este post cómo podemos llevar a cabo esta tarea.

Hemos oído en cantidad de ocasiones la problemática que hay a la hora de los cambios de URLs, ya sea por cambio de dominio o por introducción de URLs amigables, en relación al SEO y no perder posicionamiento. Para estos casos, Google nos recomienda siempre hacer Redirects 301 que lo que le decimos es que ese sitio web o página ha sido movida permanentemente a la nueva dirección.

En el post de Google nos recomienda que lo hacer los redireccionamientos en el servidor pero hay veces en los que no tenemos acceso, por lo que tenemos que hacerlo a nivel de página. En este post veremos las dos opciones, en el servidor (suponemos que usamos Apache como servidor web) y en la propia página.

 

Redireccionamiento en el .htaccess:

El fichero .htaccess es un fichero de configuración del servidor Apache donde entre otras muchas definimos las directivas de configuración de los diferentes directorios y subdirectorios. Hay que tener cuidado al escribir estas directivas puesto que van en orden es decir, siempre las mas restrictivas al final. También recordar que tenemos que tener mod_rewrite activado para poder hacer uso.

Redirect 301 de una página:

Este caso es para cuando queremo solo redireccionar una página vieja a una nueva porque ha cambiado la URL

Redirect 301 /mi-pagina-vieja http://www.minuevodominio.com/mi-nueva-pagina

Redirect 301 de un dominio:

Este caso es para cuando cambiemos de dominio y tengamos uno nuevo, lo que hacemos aquí es todo el el dominio antiguo lo redireccionamos al nuevo.

RedirectMatch 301 ^/$ http://www.minuevodominio.com

Redirect 301 de un directorio:

Este caso es para cuando cambiamos de directorio y queremos mantener todo lo que cuelga de el, tanto carpetas como páginas.

Redirect 301 /antiguo-directorio/ http://www.midominio.com/nuevo-directorio/

Puede darse el caso también que eliminemos un directorio y todas sus páginas, por lo que queremos redireccionar todo eso a una página nueva. Esto lo haríamos de la siguienta manera

Redirect 301 ^/antiguo-directorio/(.*)$ http://www.midominio.com/nueva-pagina

 

Redireccionamiento en la propia página

No solo porque lo diga Google, sino que nosotros también recomendamos hacer las redirecciones en el servidor, pero como hemos dicho hay veces que no tenemos acceso al fichero .htaccess, por lo que deberemos hacerlo directamente en el código

Redirect 301 en un sitio basado en PHP:

<?

header(‘HTTP/1.1 301 Moved Permanently’ );
header( ‘Location: http://www.minuevositio.com’ );

?>

Redirect 301 en un sitio basado en Python/Django:

from django import http
def view(request):
return http.HttpResponseRedirect(‘http://www.minuevositio.com/’)

Redirect 301 en un sitio basado en ASP:

<%@ Language=VBScript %>
<%
Response.Status=»301 Moved Permanently»
Response.AddHeader «Location»,»http://www.minuevositio.com»
%>

Redirect 301 en un sitio basado en ASP.NET:

<script runat=»server»>
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = «301 Moved Permanently»;
Response.AddHeader(«Location»,»www.minuevositio.com»);
Response.End();
}
</script>

Redirect 301 en un sitio basado en JSP:

<%
response.setStatus(301);
response.setHeader( “Location”, “http://www.minuevositio.com/” );
response.setHeader( “Connection”, “close” );
%>

Redirect 301 en un sitio basado en Ruby on Rails:

def old_action
headers[«status»] = “301 Moved Permanently”
redirect_to “http://www.minuevositio.com./”

Redirect 301 en HTML:

<head>
<meta http-equiv=»refresh» content=»0; url=http://www.minuevositio.com/nueva-pagina.html»>
</head>

 

Hay 6 comentarios

Añade el tuyo
  1. 1
    iarenaza

    Hola Dani,

    aunque los redirect 301 son a veces necesarios (o muy convenientes), como casi todo en esta vida hay que usarlo con moderación.

    Imagino que tu experiencia al respecto será variada, pero conozco algunos casos donde han convertido el redirect 301 en una especie de «herramienta mágica» que vale para todo y que en caso de duda se usa sí o sí. Y se acaba con conjuntos de reglas tan grandes que son inmantenibles, y que no sabes ni como te van a a afectar (por la interacción entre ellas).

    Como en muchas otras cosas, hay que aplicar el sentido común y analizar si, en vez de añadir otro redirect 301 más, no sería mejor (sobre todo a medio y largo plazo) usar otra estrategia para cada caso particular.

    Un saludo cordial.

    • 2
      Dani Reguera Bakhache

      Hola Iñaki,
      tienes toda la razón, la verdad que los redireccionamientos siempre digo que son tareas de cirujano y por eso hay que hacerlos con el mayor cuidado y coherencia posible.

      En este caso, hemos explicado el caso sencillo en el que queremos redireccionar de un dominio a otro nuevo o sobreescribir una URL.
      Cuando tenemos muchas redirecciones, tenemos que tener mucho cuidado e intentar optimizarlas al máximo, como bien comentas me ha pasado en algunos proyectos que como es «tan facil» hacer un redirect te encuentras con cientos de entradas una a una que podrían optimizarse mediante patrones, expresiones regulares, etc… Y no solo eso, sino que no funcionan como esperamos porque interactúan entre ellas.

      Al abordar esta tarea hay que hacerlo con mucho cuidado y, como comentas, con moderación.
      Geroarte,
      Dani

  2. 4
    vero4travel

    Buenos días. Excelente artículo…yo tengo un caso muy particular, a ver si puedes orientarme un poco.

    Tengo mi blog en blogger con un dominio.com apuntando a blogger
    Tengo la migración hecha en wordpress con midominio.es
    Me gustaría que mi dominio principal en wordpress fuera .com y no .es

    Yo puedo hacer esta redirección (supongo que está mal porque mi dominio está apuntado a /vieja-pagina y no a nueva-pagina?

    Redirect 301 /vieja-pagina http://www.midominio.com/nueva-pagina

    ¿Tendría que hacer?
    Redirect 301 /vieja-pagina /nueva-pagina

    Y una vez que lea el archivo hacer que el dominio.com apunte al hosting de wordpress?

    Muchas gracias de antemano,
    Verónica.

    • 5
      Dani Reguera Bakhache

      Hola Verónica, en tu caso, como lo que migras es el dominio, deberías decirle que el dominio .com apunte a la maquina donde tienes el .es

      En este caso no hay que hacer redirecciones sino que tienes que modificar la IP y también el DNS, para que así sepa que cuando alguien teclee el .com debe ir a donde está la nueva página.

      Luego las páginas particulares, si que deberias hacer redirecciones siempre y cuando haya algún cambio en la URL para así ni perder el posicionamiento ni generar errores 404 a tus usuarios.
      Dani

Hay 1 comentario