
Empezando a darle caña al blog, escribiendo y puliendo detalles de SEO, pues me he encontrado con varias cosas, buscar plugins interesantes para WordPress, hacer mejoras en la nomenclatura de la web, lo cual nos lleva al post de hoy, las redirecciones 301 y 302.
Al principio de crear el blog, dejé la palabra «category» para marcar las categorías, pero no me acaba de convencer, pero como no se me ocurría nada mejor, pues así lo deje, y al poco tiempo lo cambie por «sobre» dejando así una estructura de este estilo http://www.oyagum.com/articulos/sobre/seo.
Que a mi parecer está bien enfocado para seo, aunque no creo que sea un termino muy buscado, al menos es una estructura lógica.
El problema ha surgido al cambiar la forma de llamar a las categorías después de ya haber abierto la web al mundo y a los spiderbots de los buscadores.
Comprobé en Search Console, que Google ya había indexado esas páginas y claro, al cambiarlo por «sobre» las páginas ya indexadas donde aparece «category» en vez de «sobre» darán un error 404, dando mala imagen de la web, como si estuviera descuidada y eso Google lo toma en cuenta, muy en cuenta.
Con lo cual había que poner remedio a esos problemas, y esa solución pasaba por hacer redirecciones 301.
Primero de todo voy a explicaros a los que no lo sepáis, que son las redirecciones 301 o 302 y el archivo .htaccess.
Contenido
Que son las redirecciones 301 y 302
Las redirecciones 301 y 302, son unos códigos que se usan a la hora de hacer una redirección, los cuales sirven para informar al robot que este escaneando nuestra web que esa página ya no es correcta y que la correcta es otra.
Cada código informa al robot para actuar de una forma concreta sobre lo que tiene que hacer con esos enlaces.
Diferencia entre redirección 301 y redirección 302
La diferencia principal que hay entre el código 301 y el código 302, es básicamente que la redirección 301 avisa al robot de que esa redirección es permanente y que debe eliminar de su lista de urls, esa url y dejar sólo la otra. y el código de redirección 302 avisa que esa url temporalmente debe ser otra, pero que el robot no debe borrar ni cambiar definitivamente una url por otra, simplemente por el momento.
La primera es fácil de entender, como hemos dicho antes, yo he pasado por ejemplo de «category» a «sobre» y nunca más voy a volver a usar la primera, con lo cual, le mandaré un aviso 301 para que sepa que ahora lo que manda es «sobre» y que se olvide totalmente de la primera, ya que no va a existir más.
La segunda es algo más rara de encontrarle un uso, pero también tiene su función.
Imaginaos que tenéis una landing page que por ejemplo, da descuentos, y por un error en la landing, da más descuentos de los que debería dar y decidimos parar esa página y poner otra que sirva de comodín para la gente que entra ahí mientras arreglamos la landing, pero no queremos que la página comodín sea para siempre, sino simplemente mientras arreglamos la landing que tenemos. Así que aquí lo que haremos será una redirección 302, y así informamos al robot que de momento apunte a la otra página, pero que no elimine de sus serps la antigua, ni le quite la fuerza de posicionamiento que tenía esa página y lo redirija a la nueva.
Como hacer una redirección 301 o 302 con .htaccess
Ahora veremos el caso práctico de como hacer una redirección utilizando nuestro amigo el archivo .htaccess
Primero de todo vamos a explicar:
¿ Qué es el archivo htaccess ?
El archivo .htaccess, es un archivo oculto en el servidor que le indica al servidor como actuar en unas determinadas circunstancias, en este caso un redireccionamiento 301 o 302.
Podéis encontrar más información del archivo .htaccess en este enlace.
Redirigir la web de www a sin www
1 2 3 | RewriteEngine On RewriteCond %{HTTP_HOST} ^www.tu-dominio.com [NC] RewriteRule ^(.*)$ http://tu-dominio.com/$1 [L,R=301] |
Lo primero que vamos a hacer es coger todas las peticiones que lleguen a nuestra web usando las www’s delante
Aquí haremos que todo lo que este apuntando a www.tu-dominio.com se rediriga hacía http://tu-dominio.com para dejar una url más bonita (aunque yo no lo haya hecho, en casa el herrero…)
Redirigir una página concreta
Con la siguiente instrucción en el .htaccess redirigiremos la página vieja a una página nueva.
1 | Redirect 301 /url/a/pagina-vieja/ http://tu-dominio.com/pagina-nueva/ |
Redirigir todo un directorio a otro lado
1 | RedirectMatch 301 ^/directorio-antiguo/(.*)$ http://tu-dominio.com/directorio-nuevo/$1 |
Redireccionar tu web de http a https con .htaccess
Con esta instrucción podemos redirigir nuestra web http a https de forma rápida y sencilla. No es una redirección 301 o 302, pero yo creo que os puede ser muy útil.
1 | Redirect permanent / https://tu-dominio.com/ |
De esta forma, redirigiremos todo lo que llegue a la versión https y nos olvidaremos para siempre del http.
Cómo redireccionar sin usar .htaccess
Aunque la mejor forma para hacer las redirecciones sea usando el .htaccess, a veces no tenemos acceso a él, y no nos vamos a rendir si nos pasa eso, así que a continuación os voy a poner otras formas de hacer una redirección 301 en varios lenguajes de programación.
Redireccionar usando PHP
1 2 3 | <?php Header( "HTTP/1.1 301 Moved Permanently" ); Header( "Location: http://dominio.com" ); |
Redireccionar usando ASP
1 2 3 4 5 | <%@ Language=VBScript %> <% Response.Status="301 Moved Permanently" Response.AddHeader "Location","http://tu-dominio.com/redireccion" %> |
Redireccionar usando ASP .NET
1 2 3 4 5 6 7 | <script runat="server"> private void Page_Load(object sender, System.EventArgs e) { Response.Status = "301 Moved Permanently"; Response.AddHeader("Location","http://dominio.com/"); } </script> |
Redireccionar usando JSP
1 2 3 4 5 | <% response.setStatus(301); response.setHeader( "Location", "http://dominio.com/" ); response.setHeader( "Connection", "close" ); %> |
Qué métodos no usar para las redirecciones
Ya hemos visto, todos los métodos que podemos usar para hacer las redirecciones, ahora vamos a mostrar cuales son los métodos que no se deben usar para hacer las redirecciones y porqué.
Redirección HTML
1 | <meta http-equiv=“refresh” content=“0; url=http://tu-dominio.com”> |
Redirección JavaScript
1 2 3 | <script type="text/javascript"> window.location.replace(“http://dominio.com”); </script> |
Estas redirecciones no las deberíamos usar, ya que si las usamos no estamos dando ninguna información adicional a los buscadores y seguiran indexando nuestras páginas correctamente, y seguiremos teniendo enlaces a url’s incorrectas aunque se vean de forma correcta.
Eso es todo, espero que os haya servido y recordad:
No olvidéis de comentar, vuestro código y en el blog 😉