Cómo quitar correctamente las fechas de los enlaces permanentes de WordPress

El problema

Cuando instalas un nuevo WordPress, los enlaces permanentes por defecto son del tipo de fecha y nombre de la entrada, o sea:

midominio.com/2018/10/11/nombre-entrada/

Que en formato de los ajustes de las etiquetas de WordPress para los enlaces permanentes es esto:

/%year%/%monthnum%/%day%/%postname%/

Y, muchas veces, con el tiempo, te piensas si realmente aportan algo en tus enlaces esos años, meses y días, y decides cambiarlos a solo el nombre de la entrada, o sea…

midominio.com/nombre-entrada/

Que en etiquetas es esto:

/%postname%/

La solución (primera parte)

Imagen: Kinsta

Y sí, uno pensaría que hacerlo es tan fácil como ir al escritorio de WordPress y, en Ajustes -> Enlaces permanentes, cambiar de Día y nombre a solo Nombre de la entrada.

O sea, pasar de esto…

A esto otro…

Guardas y ya está ¿no?

En principio sí, pero ¿qué pasa con todos esos sitios que te enlazan a tus URLs que antes tenían la fecha en la misma?

Pues que verán algo así…

O como se vean los errores 404 en tu web.

Porque estarás ofreciendo errores de no encontrado para cada enlace de tu web, y eso ya sabes que no les gusta a los usuarios, y tampoco a los motores de búsqueda.

De hecho los buscadores te penalizarán, provocando un desastre en tu tráfico, que caerá irremediablemente.

Y es que, aunque es verdad que sí que tienes que hacer ese cambio, todavía te falta un paso: crear una redirección permanente de tus URLs antiguas a las nuevas, para no ofrecer nunca un feo error 404.

La solución (segunda parte)

Por lo tanto, una vez hayas hecho el cambio anterior, de inmediato, a toda prisa, cagando leches, tienes que abrir tu archivo .htaccess, que estará en el directorio de tu instalación de WordPress, y buscar las líneas de rewrite estas:

# 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

Y, justo después de la línea RewriteBase /, añadir lo siguiente:

RewriteRule ^([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([^/]+)/?$  [R=301,L]

Como siempre, cambia el dominio de ejemplo (https://midominio.com) por el tuyo.

Quedaría tal que así, para que no tengas dudas:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([^/]+)/?$  [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

¿Y si tengo WordPress instalado en un directorio?

Buena pregunta, porque el código anterior es para un WordPress instalado en el directorio raíz.

Si la instalación de WordPress a la que quieres simplificar los enlaces permanentes está en un subdirectorio, por ejemplo /tienda/, entonces, además del cambio de enlaces permanentes en los ajustes de WordPress, como antes, la línea a añadir al archivo .htaccess sería así:

RewriteRule ^([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([^/]+)/?$  [R=301,L]

¿Pero y si mis enlaces permanentes eran del tipo mes, día y nombre de entrada?

Pues sí, es otra posibilidad, en este caso la regla a añadir al archivo .htaccess sería así:

RewriteRule ^([0-9]{4})/([0-9]{1,2})/([^/]+)/?$  [R=301,L]

¿Y si eran del tipo año, mes y nombre de entrada?

Bien, entonces la regla a aplicar será esta:

RewriteRule ^([0-9]{4})/([0-9]{1,2})/([^/]+)/?$  [R=301,L]

¡Mola! ¿Y si solo tenían el año y el nombre de la entrada?

Vaaale, entonces la regla sería esta:

RewriteRule ^([0-9]{4})/([^/]+)/?$  [R=301,L]

¡Qué divertido! ¿Y desde día y nombre de entrada?

Apunta, dispara y calla 🙂

RewriteRule ^([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([^/]+)/?$  [R=301,L]

¿Y para aplicar estas últimas reglas a subdirectorios?

Es sencillo, para poder aplicar estas últimas reglas a subdirectorios fíjate en el primer ejemplo, para saber cómo añadir la ruta a la regla de rewrite, para no repetir tanto código casi igual.

Resumiendo

Aunque para algunos pueda ser algo intimidante, en realidad es muy sencillo cambiar de estructura de enlaces permanentes a cualquier sitio WordPress.

Solo tienes que seguir este sencillo procedimiento que hemos visto de 2 pasos:

  1. Cambia los enlaces permanentes en la administración de WordPress.
  2. Añade la redirección en el archivo .htaccess.

Último consejo

Si me admites un consejo, evita andar cambiando de estructura de enlaces permanentes cada cierto tiempo.

La única regla de los buscadores es que los enlaces sean cuanto más cortos y semánticos posible mejor, así que la estructura de Nombre de la entrada, de %postname% es perfecta, sencilla, semántica y corta.

Por otra parte, las redirecciones evitarán ofrecer resultados de error 404 no encontrado, pero siempre ralentizan la carga de tu sitio y requieren más consumo de recursos de tu servidor, al requerir nuevas tareas al módulo de rewrite, así que si las puedes evitar mejor.

El mejor consejo es que cuando inicies un proyecto WordPress elijas la estructura de enlaces %postname% y te dediques a lo tuyo a partir de ahí.

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(7 votos, promedio: 5)

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

6 comentarios en “Cómo quitar correctamente las fechas de los enlaces permanentes de WordPress”

  1. Recuerdo que hace mucho no se recomendaba la estructura %postname% por cuestiones de rendimiento.

    ¿Ya no es así? Supongo que no porque ya no he escuchado hablar del tema.

    1. Me lo habrás oído a mi posiblemente 😀

      Lo que comenté es que la estructura «nativa» de WordPress es la que viene por defecto, el resto son redirecciones internas. Pero la diferencia de rendimiento es mínima, mínima, mínima 🙂

  2. Acerina Almeida

    Hola Fernando
    Tengo ese problema en mi web/blog Acerina Almeida Abogada, el blog venía de blogger y se quedó con las fechas.
    La verdad es que no entiendo nada de programación y no se valorar tu propuesta que a primera vista parece fácil.
    He visto otras soluciones como instalar el plugin Redirections.
    ¿Cuál consume más recursos?
    ¿Cuál de las dos soluciones es mejor?
    Saludos

    1. Es más limpio hacerlo desde .htaccess, como propongo, si lo haces con el plugin Redirection consumes recursos de WordPress y dependerás siempre de él

  3. Antonio García

    Hola.
    Tengo una estructura con /%category%/%postname%/%post_id%.html y me gustaría quitar el %post_id%.html de las urls para dejar solo categoría y nombre.

    Cómo sería el código para el htaccess?

    Grcias de antemano.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Ir arriba Ir al contenido