Este post no sabía exactamente cómo llamarlo, ya que voy a mostrar cómo realizar distintas acciones todas relacionadas con las redirecciones en WordPress, pero orientadas al tema de las URL permanentes o URL amigables.
Vamos a empezar por el principio: ahora mismo, la formación y las costumbres hacen que las configuraciones de URL amigables y URL de medios de WordPress se realicen correctamente desde el principio durante la configuración inicial del CMS, pero esto NO ha sido siempre así.
Personalmente, estoy cansado de insistir en que cuando realizamos la configuración inicial debemos ajustar dos parámetros que si cambiamos a posteriori no se cambian de forma retroactiva:
- La configuración de las URL amigables o URL permanentes.
- La configuración de la estructura de carpetas de guardado de medios.
Estas dos cosas debemos ajustarlas cuando instalamos WordPress, ¿no sabes cómo hacerlo? Pues… aquí te dejo un vídeo que forma parte de mi tutorial básico de WordPress:
¿Pero qué ocurre si ya tenemos la configuración de las URL y los medios hecha desde hace muchos años?
Esto es muy posible, ya que existen muchísimos sitios web en Internet que llevan más de 8 o 10 años funcionando y actualizándose versión tras versión y que tienen las URL mal configuradas y los medios guardados en estructura de carpetas basadas en mes y año.
También hay otro “supuesto”. Cuando el administrador del sitio web no tiene los conocimientos necesarios en el momento de crear el sitio web y no realiza la configuración correcta para las URL y los medios en ese momento; posteriormente, no puede cambiarlo porque no sabe hacerlo sin “reventar” la web.
No me voy a liar más. Vamos directamente con las redirecciones y las URL.
¿Quieres
recibir mis articulos?
No te pierdas todos mis trucos para WordPress, CMS, Marketing Digital y WPO.
Introducción – Redirecciones en WordPress
En un sitio web, hacer redirecciones (sobretodo 301) es algo normal y que con el uso se va haciendo cada vez más necesario.
Las redirecciones se utilizan para enviar al visitante o a los bots de un sitio a otro, ¿la razón? Pues hay varias posibles; por ejemplo, un contenido borrado o actualizado. La intención principal es que el usuario o el bot no reciba un error 404 “Not found” y en su lugar reciba una solución.
¿Cómo podemos hacer redirecciones en WordPress? Pues yo personalmente siempre recomiendo dos formas, aunque hay algunos métodos más:
- Mediante el .htaccess en el caso de servidores Apache o LiteSpeed (todos los servidores de Raiola Networks soportan esto).
- Mediante plugins como el de RankMath o Redirection.
En el caso de servidores Nginx u otro servicio web que no permita el .htaccess, debemos realizar las redirecciones en el archivo de configuración del propio servicio web o en un plugin que realice las redirecciones por PHP.
Yo siempre hago las redirecciones de contenido mediante plugin, ya que la interfaz me da mucho más juego y control sobre todas las redirecciones que tengo añadidas e incluso me cuenta los HITs que se hacen a esas redirecciones.
Pero soy consciente de que algunas redirecciones 301 con comodines tienen que ir directamente en el .htaccess para que se “carguen” antes de ejecutarse el código de WordPress.
Con un plugin, todo se basa en introducir el tipo de redirección, la URL antigua y la URL nueva y, con eso, ya estaría. Cuando hacemos redirecciones en el .htaccess la cosa es un poco más compleja, ya que debemos conocer la sintaxis:
1 | Redirect 301 /urlmala/ |
Te parece simple, ¿no? El problema viene cuando tienes 10.000 redirecciones en ese .htaccess. Además, tengamos en cuenta que el .htaccess en WordPress se puede utilizar para más cosas.
Lo que has visto en el código anterior es una redirección simple, pero cualquier regla en el .htaccess se puede complicar y una redirección con más condicionales o más comodines no podrás introducirla correctamente en un plugin.
Este es un ejemplo para hacer una redirección completa de un dominio a otro dominio:
1 2 | RedirectMatch 301 /(.*) RedirectMatch permanent /(.*) |
Como puedes ver, la cosa se pone más compleja que una simple redirección 301 dentro del mismo dominio.
Pero vamos a lo que vamos, veamos cómo solucionar los dos problemas que he mencionado al principio del artículo.
Problema 1 – Redireccionar URL con día, mes y año
El problema viene cuando dejamos la configuración por defecto en WordPress al instalarlo y empezar un proyecto.
Cuando instalamos WordPress, la configuración por defecto de los enlaces permanentes dentro de “Ajustes” y “Enlaces permanentes” es esta:
En rojo tenemos la opción que viene por defecto y en verde la que debemos configurar al principio después de instalar WordPress para evitar tener problemas. Resumiendo: la opción “Día y nombre” no es la acertada; debemos configurar “Nombre de la entrada” en los enlaces permanentes.
La diferencia, para que te hagas una idea en lo práctico, sería esta:
- URL configurada con “Día y nombre”:
- URL configurada con “Nombre de la entrada”:
¿Ves la diferencia? Creo que está clara. Son URL más limpias y más orientadas al SEO a nivel estructural.
Si esto lo configuramos meses después, cuando la web ya tiene tráfico y contenido, vamos a tener un problema importante porque todas esas URL antiguas van a crear errores 404 que debemos solucionar con 301. Pero aquí viene el tema: hacer una redirección 301 para cada URL de la web es una “rayada” y por eso la idea es redireccionar las URL todas de golpe.
Por lo tanto, si queremos cambiar la configuración de las URL amigables, en primer lugar hacemos el cambio en WordPress y eso también cambiará algunas cosas en el .htaccess (en caso de estar en un servidor Apache o LiteSpeed).
Posteriormente, nos toca hacer la redirección. Esto es lo que debemos poner en el .htaccess:
1 | RedirectMatch 301 ^/([0-9]+)/([0-9]+)/([0-9]+)/(.*)$ |
Evidentemente, debes personalizar el código con tu dominio. Si tienes el WordPress en una subcarpeta o similar, también debes personalizarlo.
En algunos casos, puede que después de hacer este cambio veamos que se siguen generando archivos (como las categorías) basadas en mes y año, lo que puede generar contenido duplicado en nuestro sitio web, lo cual es malo para el SEO. En estos casos debemos aplicar esta redirección al .htaccess:
1 2 | RedirectMatch 301 ^/([0-9]+)/([0-9]+)?/?([0-9]+)?/?$ https://midominio.com/ RedirectMatch 301 ^/([0-9]+)/([0-9]+)?/?([0-9]+)?/?page https://midominio.com/ |
Como puedes ver, lo que hace es redireccionar esos archivos directamente a la home de la web.
Problema 2 – Redireccionar URL de medios con mes y año
Otro de los cambios que si no hacemos al principio después puede darnos problemas es la organización de archivos en carpetas por mes y año.
Esta opción podemos encontrarla en “Ajustes” > “Medios”:
Esa opción llamada “Organizar mis archivos subidos en carpetas basadas en mes y año” debe estar SIEMPRE desactivada desde el principio.
Pero en el hipotético caso de que no la desactivemos al principio y la desmarquemos meses después, esto no afectará a las imágenes y archivos subidos antes de desmarcarla.
¿En qué afecta esto? Pues en que las imágenes y otros archivos subidos a la galería de WordPress, en lugar de subirse directamente a UPLOADS dentro del WP-CONTENT, van a guardarse dentro de UPLOADS organizadas en carpetas basadas en mes y año.
¿Esto es malo? No, pero si algún día queremos trabajar con todas las imágenes en lote o en masa descargándolas a nuestro ordenador, podemos tener más problemas y perder mucho tiempo.
Si queremos cambiar esto, debemos primero cambiar la opción en WordPress. Después vamos a mover los archivos con el cliente FTP a la raíz de la carpeta UPLOADS:
Esto es una “rayada” y puede llevar tiempo, pero solo hay que hacerlo una vez.
A continuación, debemos hacer una redirección para cada tipo de archivo que tenemos subido a la galería multimedia:
1 2 3 | RewriteRule ^wp-content/uploads/([0-9]+)/([0-9]+)/(.+?)$ /wp-content/uploads/$3.pdf [L,R=301] RewriteRule ^wp-content/uploads/([0-9]+)/([0-9]+)/(.+?)$ /wp-content/uploads/$3.jpg [L,R=301] RewriteRule ^wp-content/uploads/([0-9]+)/([0-9]+)/(.+?)$ /wp-content/uploads/$3.png [L,R=301] |
Esto puede hacer que se dañen algunas funcionalidades de la galería multimedia de nuestro WordPress, pero no existe la solución perfecta a este problema. Tienes que valorar si quieres hacerlo o no.
Evidentemente, la mejor solución es configurar correctamente WordPress antes de empezar tu proyecto web, tal y como muestro en este videotutorial:
8 Responses
Hola, hacer estos cambios afectaría a los enlaces externos que van hacia las urls con fecha?
Si, de hecho eso es lo importante, que así no enviamos enlaces externos a 404.
¡Qué interesante artículo, Álvaro!
Yo siempre he tenido dudas con respecto a SEO cuando te llega un cliente que tiene la web medianamente posicionada por antigüedad y tiene los enlaces permanentes con fecha.
¿Cómo afecta al SEO el crear tantas páginas con los enlaces correctos?
Hola Pablo, pues como afecta… la palabra es “imprevisible”, aunque creo que es un cambio necesario y que merece la pena arriesgarse.
Gran articulo que me llega apenas para un cliente que le estoy trabajando exactamente esa migración, gran contenido como siempre
Hola Marlon, muchas gracias 🙂
Hola Alvaro,
he probado como has dicho, pero no me ha salido.
He puesto RedirectMatch 301 ^/([0-9]+)/([0-9]+)/(.*)$ (ENLACE ELIMINADO) para año/mes/
Y luego he cambiado en Enlaces Permanentes a “Nombre de la entrada”
Hola Naskicet, el método funciona, ya que la semana pasada lo he tenido que utilizar y no me ha dado problemas.
Agradecería que me dijeras que error te da o cual ha sido el comportamiento de la web con ejemplos, ya que he entrado a tu web y veo las URL perfectamente.