Un pequeño tutorial para explicar cómo modificar o actualizar los permalinks o enlaces permanentes de nuestro blog de wordpress sin perder visitas ni afectar a los buscadores utilizando redirecciones en el .htaccess.
Las razones para querer cambiar los permalinks son muchas, unas veces es porque nunca nos habíamos preocupado del SEO de nuestro wordpress hasta ahora, y la configuración por defecto de nuestro wordpress parecía tan buena como cualquier otra. Otro caso muy típico es cuando decidimos dar un salto de calidad y mover nuestro blog desde wordpress.com a un servidor propio usando wordpress.org.
Sea cual sea el motivo, si estás leyendo esto es porque quieres cambiar o has cambiado los permalinks de tu blog y no eres capaz de que los enlaces antiguos sigan funcionando.
Hace unos meses escribí este artículo dónde explico algo más acerca de los enlaces permanentes y recomiendo un plugin para solucionar los problemas de redirección que provoca el cambio. Este plugin ya no se ha actualizado desde 2009, así que la solución que os traigo hoy se basa en la modificación del archivo .htaccess de nuestro servidor.
¿Por qué necesito hacer todo eso?
Las razones para modificar los permalinks son muchas y variadas, así que recomiendo en cualquier caso leer el otro artículo para entender bien como funcionan los permalinks y las razones para cambiarlos.
El problema es que si modificamos los permalinks en un blog que ya lleva tiempo online, nuestro blog seguirá funcionando, pero todos los enlaces externos que hubiera por la red (en busquedas de google, facebook, etc) darán un error 404, tanto a visitantes como a Google, lo cual puede tener un efecto terrible en el número de visitas y en el posicionamiento en los buscadores.
Al redirigir las antiguas URL a las nuevas, los visitantes y los buscadores no notarán el cambio y solo verás los beneficios de un mejor SEO en tu blog.
El problema de otras soluciones y plugins que hay por la red es que no tienen en cuenta algunas otras páginas que pueden verse afectadas en nuestro blog, como por ejemplo la redirección de páginas de archivo de años o meses o la paginación:
midominio.com/blog/2013/
midominio.com/blog/2013/02/
midominio.com/blog/page/02/
Algo que si hemos tenido en cuenta en el código utilizado en este tutorial. Código obtenido principalmente de aquí.
Requisitos:
- Hacer una copia de seguridad de todos los archivos y de la base de datos.
- Poder tener acceso via FTP (u otros medios) al directorio raiz de nuestro blog.
- Hacer una copia de seguridad.
- Estar usando los permalinks y haberlos probado en nuestro servidor con anterioridad para confirmar que podemos usar el archivo .htaccess en nuestro servidor.
- Saber lo que estamos haciendo. Un error al editar el .htaccess puede estropear todo el blog, estáis avisados.
- ¿He nombrado que hay que hacer una copia de seguridad?
Instrucciones:
Para el ejemplo vamos a suponer que el blog está instalado en la subcarpeta /blog/ de nuestro servidor y que para visitarlo accedemos usando la dirección
http://dominio.com/blog/
Entramos en nuestra configuración del blog, y bajo el menú de Ajustes->Enlaces permanentes podremos ver cual es la configuración de Permalinks que estamos usando.
Vamos a suponer el caso más común, que nuestro blog está usando el sistema de permalinks por defecto de wordpress:
/%year%/%monthnum%/%day%/%postname%/
y lo queremos pasar a este otro (que es lo recomendable):
/%postname%/
Accedemos por ftp a nuestro servidor, buscamos el archivo .htaccess (que está en el raíz), lo descargamos a nuestro ordenador y lo abrimos con un editor de texto, debería tener este contenido o por lo menos debe aparecer esto en alguna parte del mismo:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>
# END WordPress
Vamos a introducir este código en medio del código de wordpress justo después de la línea
RewriteBase /blog/
RewriteCond %{REQUEST_URI} !page
RewriteRule ^[0-9]{4}\/+[0-9]{2}\/+(.+)$ /blog/$1 [L,R=301]
De modo que nuestro contenido quedará de este modo:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteCond %{REQUEST_URI} !page
RewriteRule ^[0-9]{4}\/+[0-9]{2}\/+(.+)$ /blog/$1 [L,R=301]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>
# END WordPress
Una vez tenemos el htaccess preparado lo subimos al servidor y comprobamos que las URL antiguas redirigen a las nuevas.
Comprobamos también que funcionan otras páginas como los archivos anuales, páginas estáticas, etc, y si todo está bien, ya podemos disfrutar de las nuevas URLs en nuestro blog. Si no, volvemos a subir el .htaccess de la copia de seguridad (has hecho una, verdad?) y volvemos a poner los permalinks como estaban. Revisamos el proceso y lo intentamos de nuevo.
Una forma de comprobar que en google pueden llegar a nuestra web es haciendo una búsqueda que sepamos que nos muestra una página antigua en google o usar el comando «site:planetahuevo.es» para mostrar todo el contenido que google tiene enlazado de nuestro blog, o mirando el webmaster tools, pero esto lo dejamos para otro artículo.
Jejejeje, me ha encantado ese » vamos a suponer que el blog está instalado en la subcarpeta /blog/» :-P ¡Muchísimas gracias, maese! En cuanto pueda lo implemento y me deshago de ese plugin, que no es bueno tener tantos.
¡Un abrazo y gracias por la referencia!
XDD No me pude resistir. :P Yo he bajado a menos de 10 plugins, y la cosa vuela! A ver si escribo sobre eso un día que es más importante de lo que parece.