Contents
Cambiar de estructura de permalinks en wordpress sin perder redirecciones ni posicionamiento seo
En wordpress tenemos varias formas de ubicar los enlaces de nuestro post, tradicionalmente los enlaces permanentes o permalinks los poníamos en formato de /año/mes/nombre_de_post.html pero por ejemplo si queremos cambiarlo a solo el nombre del post y sin html o si quisieramos por ejemplo ponerlos de otra forma, podemos hacerlo con una simple regla en el htaccess básico de wordpress que es de este tipo:
El archivo .htaccess original de wordpress
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
Formatos de permalinks o enlaces permanentes de wordpress
Los permalinks o enlaces permanentes que nos ofrece wordpress son variados
- Simple Con formato de enlace permanete /?p=123 , que en este caso el parámetro es el ID del post o pagina.
- Dia y nombre La expresión que nos genera internamente wordpress es el del tipo /%year%/%monthnum%/%day%/%postname%/ y los post serán del tipo: www.midominio.com/2009/11/21/post-inicial/
- Mes y nombre /%year%/%monthnum%/%postname%/
- Numérico /archivos/%post_id%
- Nombre de la entrada: /%postname%/
- Estructura personalizada: La podremos definir nosotros , si queremos incluir datos como la categoría del post, o el id del post, podremos incluir muchos parámetros para hacer nuestra url personalizada, normalmente se suele hacer con la básica del nombre de la entrada sola, pero cada uno que haga lo que quiera.
Problema con redirección.
En mi caso se me planteaba el siguiente problema, este blog concreto venía de un cambio de hosting de blogger a wordpress y al generar las redirecciones, blogger realizó una url de permalinks personalizada que era /%year%/%monthnum%/%postname%/ pero de tipo .html con lo que hacía un poco compleja la redirección.
Lo que necesitaba era que las páginas que estaban indexadas en google, que incluían un formato como
http://www.midominio.com/%year%/%monthnum%/%postname%/.html las quería cambiar a solo
http://www.midominio.com/%postname%/ además de por otras razones como el hacer una url más amigable, las url que tenía algunas indicaban que el post había sido generado en 2009 y daban sensación de antigüedad, nada deseable para las personas que entran a una página de este tipo.
He probado varios plugins para hacer la redirección de forma automática y si soy sincero ninguno me ha convencido, habré probado como diez, unos simplemente hacen redirecciones de tipo 301 pero para posts individuales, otros no funcionan correctamente, hacen la redirección si los formatos de permalinks son estándard, pero no me valían para mi caso, ya que al incluir el html se volvían un poco locos y las redirecciones no las hacían bien.
Solución a la redirección de permalinks
Y claro, ante esta perspectiva tenía claro que me iba a ir al .htaccess, como he dicho anteriormente, así que me he puesto manos a la obra a intentar conseguir la regla que me convirtiera todos los posts con url “antigua” a la nueva url deseada.
No se si estaréis familiarizados con las expresiones regulares a incluir en la directiva RedirectMatch pero si no lo estáis existe una herramienta clave y de gran ayuda para generar la regla de redirección 301 de los permalinks antiguos a los permalinks nuevos es esta proporcionada Yoast , se trata de un generador de la expresión regular a incluir en .htaccess, de gran ayuda si no queremos complicarnos la vida en intentar comprender y aprender a crear expresiones regulares , que por otro lado sería interesante y de gran ayuda, pero si vamos a lo rápido esta herramienta nos dará la vida.
En mi caso la regla que debo incluir es la siguiente:
RedirectMatch 301 ^/([0-9]{4})/([0-9]{2})/([^/]+)/*.html$ http://www.midominio.es/$3
Lo incluimos en el .htaccess básico de wordpress al final y a funcionar, la redirección funciona correctamente y nos ahorramos de plugins innecesarios , eficacia 100% .
Excelente post, me ahorro un montón de horas de error en mi portal web, estaba en la misma situación tuya, también venia migrado de blogger. De antemano muchas gracias.
pues a mi se me ha complicado me marca que hay muchas redirecciones he cambiado los permalinks a categorias/nombre del post y si navego pero los links de google mandan error 404