Presentador Virtual e24Presenter
Encuentra usuarios de Twitter en tu ciudad con LocaFollow

votarPermanent Redirect 301 en Wordpress

Autor: aartiles | Archivado en: PHP, Recursos el día 23/Dic/2008

¿Qué pasa si de repente cambiamos la estructura de los enlaces permanentes (permalinks) de nuestros post?

  1. Muchos enlaces desde otras webs pueden quedar rotos
  2. En caso de que no queden rotos hay peligro de que se genere contenido duplicado.

Bueno tranquilos… hay varias soluciones disponibles:

  • Permalink Redirect WordPress Plugin: Su principal uso es garantizar que hay una única URL para el mismo contenido, mediante redirecciones 301 si la URL solicitada es diferente del permalink. Pero configurando las opciones también nos ayudará en caso de que hayamos cambiado la estructura de nuestras URLs.
  • Angsuman’s Permanent Redirector Plugin: Este permite establecer mediante un campo personalizado en cada post que queramos redirigir permanentemente a otra dirección. Muy útil si son solo algunos posts los que queremos corregir.

Ahora os cuento mi caso por si hay algún incauto que le haya sucedido lo mismo que a mí. En los casi 5 años de Bdw se ha transitado por numerosas versiones de Wordpress y se han probado cuantos plugins y trucos han salido durante todo este tiempo. Como muchos cambiamos de URLs con parámetros de la forma www.bitacoradewebmaster.com/p=xxx a URLs amigables, por supuesto esto no tiene problema pues se mantenían funcionando ambas URLs. Pero en una de las actualizaciones de una versión a otra no se mantuvieron las IDs de los posts (algún descuido humano), y eso si es grave porque todas las webs que enlazan nuestros antiguos posts con la forma www.bitacoradewebmaster.com/p=xxx están devolviendo Error 404 No Encontrado, con todas las consecuencias que ello trae. Ninguna de las 2 soluciones antes mencionadas me pueden ayudar porque estos post existen en el blog pero con una ID diferente a la enlazada.

La solución (o chapuza) rápida que yo encontré antes de que Google nos penalizara fue modificar el index.php del raíz del Wordpress y hacer un permanent redirect 301 de todas las URLs que están enlazadas desde otros webs o indexadas por Google.

Para no acceder tanto al index.php, cree una página permanet-redirects.php en el raíz del Wordpress y lo incluí en el index.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
 * Front to the WordPress application. This file doesn't do anything, but loads
 * wp-blog-header.php which does and tells WordPress to load the theme.
 *
 * @package WordPress
 */
 
/**
 * Tells WordPress to load the WordPress theme and output it.
 *
 * @var bool
 */
include('permanent-redirects.php');
 
define('WP_USE_THEMES', true);
 
/** Loads the WordPress Environment and Template */
require('./wp-blog-header.php');

Y luego en permanent-redirects.php comparé el id que se pasaba por GET con los que me interesaba redirigir y les hacía una redirección permanente 301.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
if (isset($_GET['p'])) {
	$p = trim($_GET['p']);
	switch ($p) {
		case 694:
			header("HTTP/1.1 301 Moved Permanently");
                        header("Location:http://www.bitacoradewebmaster.com/2006/03/25/teclas-abreviaturas-en-windows/");
			exit();
		break;
		case 331:
			header("HTTP/1.1 301 Moved Permanently");
			header("Location:http://www.bitacoradewebmaster.com/2005/02/08/crear-pdfs-con-php/");
			exit();
		break;
}

Si alguien conoce una forma más limpia de hacerlo u otro pluggin lo agradecería ;)

Alfredo ArtilesSoy Alfredo Artiles, Co-Fundador de equipo24 y e24Presenter. Mi pasión es el AJAX, SEO, SEM y emprender todo lo que se me ponga por delante. Si me necesitas estoy 24x7 en Twitter @aartiles24.

Tags: , , , ,
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • LinkedIn
  • Meneame
  • MySpace
  • Technorati
  • TwitThis
Posts Relacionados

Deja un comentario.