La Estructura Web en WordPress es un tema que afecta a todos los que tenemos un blog o una página web en este maravilloso y gratuito software. Pero, aunque WordPress nos da una plataforma muy potente en la que diseñar nuestro blog o página web, sigue habiendo mucho que “configurar” y “optimizar” para mejorar la estructura web, ya sean las categorías, las URLs o los enlaces, y no sufrir de contenido duplicado. Además, cuando se hacen cambios a posteriori, es decir, con el blog o página web ya creado, hay que tener mucho cuidado con lo que se hace, si no se quiere echar por tierra el trabajo de años.

Ya traté el tema del “SEO avanzado para WordPress: Enlaces permanentes e implementación multilenguaje“, pero esta vez te voy a mostrar una serie de consejos publicados en el blog de Iñaki Huerta sobre cómo configurar la estructura web de una nueva instalación de WordPress para que tenga cierto sentido que te van a encantar. Hay muchas malas prácticas y sistemas demasiado técnicos para conseguir cosas que pueden hacerse solo teniendo un poco de cuidado, así que espero que el artículo sea de utilidad y te ayude a mejorar la estructura web de tu WordPress.

También te puede interesar:

Paso #1: Urls amigables y .htaccess

Este es un punto importante de cualquier desarrollo PHP con URLs amigables. WordPress no usa este sistema en su instalación por defecto . Es algo que puedes comprobar al navegar, viendo como las  URLs de las páginas terminan en “/?p=123” en lugar de “/mi-maravilloso-y-currado-post”.

No es necesario ser experto en Wordpress o contratar una consultoría de WordPress para saber activar las URLs amigables, ya que es bastante sencillo. Simplemente dirígete en tu administrador a Ajustes > Enlaces permanentes y selecciona una estructura de enlaces que no sea la opción “Predeterminada”. Mi consejo es que escojas “Nombre entrada”. Una vez guardes los cambios, se creará un archivo .htaccess en la raíz de tu instalación wordpress y cambiarán todas las URLs de tu instalación wordpress.

Un aviso para los más técnicos es que cualquier cambio de URLs que provoquen con código no actualizará la base de datos a no ser que se haga este proceso. Para provocarlo en los plugins tenemos la función flush_rewrite_rules, pero para cambios menores siempre será más rápido ir a Ajustes > Enlaces permanentes y volver a darle a guardar.

Bien, lo primero que vamos a hacer es retocar el .htaccess para evitar algunas incoherencias SEO:

Evitando que la web exista en varios dominios/subdominios a la vez

Es un problema típico. Instalas la página web en mibonitodominio.com y resulta que puedes acceder a ella mediante mibonitodominio.com y www.mibonitodominio.com. Esto no es demasiado problemático en SEO, ya que los buscadores están acostumbrados a este tipo de problemas y no ponen demasiadas pegas por tenerlo descuidado. El problema viene por la posible perdida de enlaces entre las distintas versiones de la web. Cuando tienes una web en dos tipos de URLs distintas no sabes cual va a contemplar como válida Google y lo que es peor, no sabes la versión que van a enlazar aquellos que nos mencionen. Pese a que Google reconozca que la web es la misma no tenemos pruebas de que los enlaces que vayan a una u otra versión de la web cuenten para posicionar el mismo contenido. Lo que si sabes es que normalmente, si existe contenido duplicado en tu página y envías enlaces hacia ambas versiones, el resultado es que estas perdiendo autoridad en ese contenido. Asi que lo mejor es no liar al algoritmo y ponerle las cosas fáciles: Que sólo exista una sola versión de la web.

SEO avanzado para WordPress: Estructura Web (Categorías, URLs y Enlaces)

Así que tenemos que elegir solo una de las dos versiones para tu wordpress. Yo personalmente prefiero la versión sin www (esta página es un claro ejemplo). Tienes que saber que tu dominio real es el que aparece sin nada delante y que “www.” es un subdominio de este dominio principal por lo que en realidad estás dando dos direcciones distintas a los buscadores para tu site. Antiguamente, para que los servidores supiesen que es lo que se les estaba pidiendo se adoptó la costumbre de iniciar la parte de la web por “www” (World Wide Web) dejando el dominio principal para accesos más importantes o simplemente bloqueado de todo acceso. Pero cuando estamos usando un dominio directamente para alojar una web (el 99,99999% de los casos) esto ya no tiene ningún sentido.

Quitar cualquier subdominio del dominio:

# eliminamos subdominios
RewriteCond %{HTTP_HOST} ^
[a-zA-Z0-9-_]+.mibonitodominio.com$ [NC] RewriteRule ^(.*)$ http://mibonitodominio/$1 [R=301,QSA,L]

Quitar solo si el subdominio es www:

# eliminamos www
RewriteCond %{HTTP_HOST} ^www.mibonitodominio.com$ [NC] 
RewriteRule ^(.*)$ http://mibonitodominio/$1 [R=301,QSA,L]

Añadiendo las www a un dominio que no las tiene:

# añadimos www
RewriteCond %{HTTP_HOST} ^mibonitodominio.com$ [NC] 
RewriteRule ^(.*)$  [R=301,QSA,L]

Añade la parte que te interese (reemplazando mibonitodominio.com por el tuyo) antes de la parte de los “RewriteCond” de tu htaccess.

Nota: Que quieras tener una sola versión de la web no significa que no sea bueno que el servidor responda en ambas. Por el mismo motivo de no perder tan preciados enlaces, es preferible que www y sin-www estén redireccionadas con un 301 la una a la otra.

Eliminando las “/” del final de las URLs

Otro aspecto desagradable que a veces sucede es que permitimos a wordpress crear urls con un “/” al final. Esto es algo que sucede en muchas instalaciones wordpress ya que la opción de enlaces permanentes ofrece crear este tipo de urls (Fíjate en la página de Ajustes > Enlaces permanentes y verás como las URLs que se ofrecen por defecto acaban por “/”).

Lo peor es que aún haciéndolo bien y quitando esta barra del final de las URLs, es posible que haya usuarios que enlacen las URLs acabadas en “/”. Si seguimos las normas básicas de las URLs (no por ser amigables entendemos que todo vale), deberíamos tener claro que el simbolo “/” representa un directorio o carpeta en cada URL. Así “/cosas/item”, significa que la página “item” está dentro de la carpeta “cosas”.

Al ser un directorio, lo que no tiene sentido es que acabes las URLs con “/”, pues significaría que cada página de tu web es un directorio sin documentos dentro. Parece una estupidez, y de echo no es ni mucho menos lo más importante del SEO, pero si vas a optimizar a nivel SEO una página web, es mejor ponerle toda la lógica posible a la misma, de forma que garantices que los buscadores entienden lo que quieres que entiendan.

Así que ve al .htaccess y añade el siguiente código para redirigir todo el tráfico acabado en “/” a su página homóloga sin “/”.

# eliminamos / al final de las urls
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ /$1 [R=301,L]

Aviso: Cuidado con no añadir esto antes de cambiar tus URLs y quitarles del final la carpeta “/”, o tus páginas dejarán de funcionar ya que .htaccess redirigirá a una página sin “/” y wordpress solo las entenderá con “/” al final.

Paso #2 Evitar la multicategorización

SEO avanzado para WordPress: Estructura Web (Categorías, URLs y Enlaces)

Uno de los problemas básicos de estructura muy típicos en desarrollos web complejos con wordpress es la multicategorización. ¿Qué pasa cuando un ítem está disponible en varias categorías a la vez?. Como comentaba antes las carpetas/directorios de nuestra web deben representar pertenencia del elemento inferior a la carpeta superior, por lo que cuando contamos con un sistema de clasificación de contenidos resulta sencillo saber como crear cada URL.

Categorías: pocas y muy bien pensadas

La mejor opción a la hora de categorizar tu instalación wordpress es pensar una serie de categorías suficientemente bien estructuradas para que los elementos siempre pertenezcan a una única categoría. Si organizas bien las categorías, podrás hacer que estas participen en tu estructura de URLs y que todo tu contenido siga reglas semánticas: los usuarios podrán ir navegando por las categorías y viendo como el contenido queda realmente dentro de estas.

Otra opción, si nuestro proyecto va a ser lo bastante grande, es pensar ya no solo en las categorías sino también en las subcategorías. WordPress permite que una categoría pueda tener categorías superiores, de forma que se crea una dependencia extra.

Así que, en WordPress, (al menos en un wordpress basado en posts) el éxito de una estructura web pasa por estudiar muy bien las categorías pensando que no deben ser solo una serie de enlaces en el sidebar, sino una parte esencial de la organización de tu contenido.

¿Qué pasa con las etiquetas?

Los tags (o etiquetas) son y serán siempre una forma genial de aportar clasificaciones secundarias a los posts (muchas plantillas y plugins necesitan un buen etiquetado de los posts para organizar los contenidos), pero eso no significa que podamos hacerlo caber todo en nuestras URLs, luego entraremos a ver como tenerlos presentes.

Paso #3 URLs basadas en categorías

Entendido el sistema que vas a usar para estructurar tu página web, y habiendo pensado perfectamente las categorías que quieres emplear, ahora toca hacerlo realidad. Otra vez volvemos a Ajustes > Enlaces permanentes y configuramos WordPress para que funcione como quieras:

  • Con una estructura de posts “/%category%/%postname%” (sin las comillas)
  • En categorías, ahora indicamos que la url sea “./” (lo que hará que WordPress elimine la horrible carpeta “/category” de nuestras URLs)
  • En las tags (etiquetas), lo dejo a tu criterio, dependiendo de como las uses pueden tener más sentido unas fórmulas u otras

Al actualizar, esto provocará que las URLs de los posts dependan de las categorías:

  • Las categorías tendrán su URL desde raiz.
  • Los posts siempre tendrán la categoría como carpeta superior.
  • En el caso de anidar subcategorías, estas automáticamente se separarán por “/” en las URLs, por lo que los posts pasarán a depender de la subcategoría.

Así, si has creado la categoría “animales”, con la subcategoría “pequeños” y un artículo llamado “Pollito”, cuando veas la URL del post esta será “/animales/pequenos/pollito”.

El problema de “no se encuentra la página”

SEO avanzado para WordPress: Estructura Web (Categorías, URLs y Enlaces) error 404Por desgracia el sistema de reconocimiento de URLs de WordPress no es perfecto y suele fallar. Al final resulta una lista de comprobaciones ordenadas de forma que WordPress va aplicando esa lista sobre la URL que está cargando el usuario y cuando encuentra una coincidencia con cualquier tipología de URL para y pasa a buscar el contenido.

El problema es que con las URLs que hemos comentado antes puede equivocarse al hacer esta detección. Fíjate que las URL’s de las categorías (“/animales” y “animales/pequenos”) no se diferencian demasiado de las de los post, sobretodo si mezclamos posts asociados a categorías inferiores o superiores.

Por ejemplo, imagina que creas un post llamado “Pequeños” y lo incluyes dentro de la categoría “animales” ¿Qué se supone que debe hacer WordPress cuando llamemos a “/animales/pequenos”?

Hace lo siguiente: Evalúa en orden su listado de posibles URLs y encuentra que los posts podrían tener esa URL, por lo que nunca llega a evaluar “/animales/pequenos” como una posible categoría.

¿Cómo solucionarlo?

La base es sencilla: debes evitar que WordPress pueda llegar a entender que un post tiene la misma URL que una categoría, por lo que debemos diferenciar un poco las URLs.

En las categorías estamos un poco atados, puesto que como el administrador solo nos deja editar su carpeta anterior (la que hemos eliminado al indicarla como “./”) no puedes hacer nada para diferenciar estas URLs de las de los posts. Donde si puedes hacer algo es en los artículos, ya que puedes editar la URL al completo. Pero como decía, nos interesa que esta comience por la categoría y por supuesto, para que exista coincidencia de Keywords debe incluir el nombre de post como parte de la misma. ¿Qué opciones te quedan? Sencillo, añadir algo más al final. No es lo más elegante, pero entre las opciones de las que disponemos es la que seguirá teniendo en cuenta nuestra estructura web.

¿Qué añadir al final de las URLs?

Esto es cuestión de gustos de cada uno. Te indico algunas opciones por las que puedes optar y que ventajas tienen cada una de ellas:

  • Extensión .html: Siguiendo con la teoría de que las URLs son directorios, los archivos finales perfectamente podrían tener extensión. Esta era una práctica bastante usada hace unos años. Añadías una extensión “.html” o “.htm” al final de tus páginas y así “engañabas” al buscador haciéndole pensar que esa página era estática (hecha a mano y no con programación) y en teoría la tenía más en cuenta. La verdad es que esa teoría tenía poco peso (como si Google no supiese que existe ModRewrite) y actualmente, por ahorrar caracteres se prefiere no incluir extensión alguna. Pero eso no significa que incluirla esté mal. Queda un poco anticuado pero es correcto. Ve a la configuración de los enlaces permanentes de wordpress y añade: “/%category%/%postname%.html”
    • Tipo URL: “/animales/pequenos/pollito.html”
    • Ventajas: a nivel de estructura web, es correcta y no añadimos más semántica
    • Inconvenientes: Urls anticuadas y pérdida de varios carácteres
  • Nombre de la página o Keyword: Actualmente muchas estrategias de keywords SEO en blogs pasan por incluir una coletilla en los titles al final de las páginas. Esta en la inmensa mayoría de los casos es o el nombre de la web (si tiene relevancia) o la mejor keyword genérica de la misma. Así si yo tengo un blog sobre Windows 8, puedo querer que todos mis títulos sean “[nombre de post] | Windows 8”. Si llevamos a cabo estas prácticas, no sería tan raro que las URLs también acaban por ese título añadido, solucionando nuestro problema de coincidencias. Ve a la configuración  de enlaces permanentes en WordPress y añade: “/%category%/%postname%-titulo-escrito-por-ti”
    • Tipo URL: “/animales/pequenos/pollito-titulo-escrito-por-ti”
    • Ventajas: la URL sigue siendo actual, sin cosas raras y respalda todo el título
    • Inconvenientes: perdida de semántica por apostar por todo el título a la vez, y dificultad para cambiar la coletilla al cabo de un tiempo (pues se cambiarían todas las URLs)
  • Id de post: Otra forma típica de solucionar este problema es añadir el ID de post al final de su URL, de forma que evitemos todo conflicto. Esto además debería agilizar las consultas internas (al consultar por ID en lugar de por postname) aunque no puedo asegurarlo al 100%. Un aviso, solo el ID no será suficiente, habrá que añadir algo más (por ejemplo “p” y luego el id). Ve a la configuración  de enlaces permanentes en wordpress y añade: “/%category%/%postname%-p%post_id%”
    – Tipo URL: “/animales/pequenos/pollito-123”
    – Ventajas: resulta medianamente natural para el usuario y se añaden pocos caracteres
    – Inconvenientes: podrían añadirse aun menos caracteres. Cuando el blog crece no es extraño encontrarse IDs de cuatro o cinco cifras.
  • Símbolo: “_”, “-“, etc.: Si somos de los que nos gusta ahorrar caracteres en las URLs a veces la mejor opción es solo añadir uno de ellos al final de la URL. Sin embargo, si hacemos esto debemos usar una fórmula que WordPress no utilice al crear las URLs. Por ejemplo si añadiésemos una “a” al final de las URLs, podría provocar coincidencias con urls de categorías acabadas en “a” y no habríamos solucionado nuestro problema. Ve a la configuración  de enlaces permanentes en wordpress y añade: “/%category%/%postname%_”
    • Tipo URL: “/animales/pequenos/pollito_”
    • Ventajas: sólo añadimos un carácter para conseguir la diferenciación
    • Inconvenientes: realmente es un truco técnico que a todos los efectos “queda mal” y que puede provocar que al copiar el link algunos usuarios lo borren por no entenderlo.
  • Darle la vuelta a los tres anteriores: Otra opción que puede venirnos bien en casos muy concretos es la de empezar con algún añadido en lugar de acabar con el. En ese caso el añadido deberá estar antes del título del post (pues quedemos que la parte inicial de la URL no cambie). El resultado, es que los efectos tanto positivos como negativos son más notorios. Ve a la configuración  de enlaces permanentes en wordpress y añade: “/%category%/elemento-extra-%postname%”
    – Tipo URL: “/animales/pequenos/elemento-extra-pollito”

Como puedes observar hay muchas  opciones -y algunas más que seguro que se te ocurren (con variables de fecha o autor, por ejemplo)- pero ninguna es del todo limpia. Es una lástima que WordPress no solucione este tema de otra forma, pero jugamos con las herramientas que se nos dan y hay que decir, que estar haciendo una optimización de estructura web solo con dos añadidos a un archivo y tocando un formulario es todo un lujo.

Paso #4 Normas para darle sentido

SEO avanzado para WordPress: Estructura Web (Categorías, URLs y Enlaces)

Por último, vamos a ver algunos detalles para que esta estructura web tenga aun más sentido en nuestra plantilla y que esté basada en los enlaces que enviamos hacia categorías y etiquetas.

No podemos permitirnos enlazar a todo siempre

Una estructura web donde todas nuestra categorias y tags están siempre enlazadas (nubes de tags y listados de todas las categorías) no ayuda a los buscadores a entender nuestra estructura web. Al final, cada enlace interno recibido provoca que unas páginas sean más importantes que otras. Por lo tanto, dentro de la estructura web que hemos comentado debes poder hacer que tus categorías sean más importantes que las etiquetas y que las categorías principales sean más importantes que las subcategorías.

Por lo tanto:

  • No uses nubes de tags, salvo en puntos concretos de la web y controlando mucho que enlaces envías en ellas y por qué.
  • Evita enlazar a etiquetas desde la estructura web de página.
  • Si usas categorías con varios niveles, no las presentes todas en el menú, sólo las principales.
  • Una vez dentro de una categoría principal, si que tendrán sentido los enlaces que dirijan hacia sus categorías inferiores en forma de nuevo submenú o menú ampliado.

Cuidado con la asociación de los artículos a sus categorías y etiquetas

Quieres conseguir que los artículos queden ligados semánticamente a sus páginas de categorízación. Una forma de ayudar a este cometido son las URLs, pero también van a tener mucha importancia los enlaces a la hora de conseguir esto. Por lo tanto un post siempre debe enlazar hacia la página que le clasifique, por lo tanto:

  • Debes incluir siempre en el contenido del post, o al final de este, enlaces hacia las categorías y los tags. Sobretodo en el caso de los tags, esto representará que cuantos más artículos existan más potente será el tag, pues más páginas les envían enlaces.
  • Etiqueta muy bien estos enlaces con rel=”tag” (por defecto muchas funciones de WordPress ya sacan así estos enlaces).
  • Cuidado con no enviar este mismo tipo de enlaces hacia otras zonas. Marca semánticamente bien donde empieza y acaba el contenido del post y envía enlaces hacia otras partes, como posts, relacionados, siguiente, anterior, promociones, etc, fuera de estos bloques.

Evitemos los enlaces hacia la arquitectura de URLs secundaria de WordPress

WordPress no solo usa estructuras para posts con categorías. Podemos encontrar formas de navegar por wordpress por archivos de fechas, por archivos de autores, etc. Estas páginas bien usadas pueden ser muy útiles pero tal y como se presentan en la mayoría de las plantillas tan solo generan confusión a los buscadores y tampoco aportan nada a los usuarios, ya que estos no tienen ningún interés en saber si nuestro post es de marzo de 2010 o marzo de 2015.

Elimina estos enlaces si no vas a darles uso. Así mismo, y ya que estas limpiando, piensa en la necesidad de cada uno de los enlaces de tu plantilla. Si no tiene utilidad real, bórralo.

Conclusión

Acabas de terminar un repaso a cómo organizar una estructura web con WordPress, bien organizada, para que los buscadores la indexen correctamente y los usuarios la entiendan. ¿Es este todo el SEO que puede hacerse a la estructura web de una instalación Worpdress? No, en absoluto: estructuras de páginas, custom-posts, custom-taxonomies, plugins varios, etc.

También te puede interesar:

Espero que te haya gustado el artículo. Deja tu comentario y que no se te olvide compartirlo :).