SEO On Page: Estructura Web en WordPress (Categorías, URLs y Links)

Este es un tema sobre el cual ya se ha hablado ampliamente. Generalmente, evito repetir lo que he visto en otros blogs o canales de YouTube; sin embargo, quisiera ofrecer algunos apuntes sobre cómo configurar una nueva instalación de WordPress. Así, la estructura web que creemos tendrá un sentido SEO más coherente.

Índice de contenidos

Este es un tema sobre el cual ya se ha hablado ampliamente. Generalmente, evito repetir lo que he visto en otros blogs o canales de YouTube; sin embargo, quisiera ofrecer algunos apuntes sobre cómo configurar una nueva instalación de WordPress. Así, la estructura web que creemos tendrá un sentido SEO más coherente.

Actualmente, al buscar información sobre este tema, se encuentran muchas malas prácticas y sistemas excesivamente técnicos para lograr objetivos que pueden alcanzarse simplemente con un poco de cuidado. Por tanto, espero que esta publicación sirva de guía definitiva para tu próximo proyecto.

Pasos para optimizar tu web de WordPress

Paso 1: Las URLs amigables y el .htaccess

Este es un aspecto crucial en cualquier desarrollo PHP con URLs amigables. Por defecto, WordPress no utiliza este sistema, algo que podemos verificar al navegar y observar cómo nuestras páginas se muestran como «/?p=123» en lugar de «/mi-querido-y-bonito-post».

No me extenderé en cómo activar las URLs amigables, ya que es bastante sencillo: simplemente ve a Ajustes >> Permalinks (permalink es cómo WordPress denomina a una URL amigable) y elige en tu estructura de post una opción diferente a «Predeterminado». Si se hace correctamente, se generará un archivo .htaccess en tu proyecto y todas las URLs internas de WordPress se actualizarán.

Nota para programadores: Este refresco de URLs es crucial para quienes modifican código o crean temas avanzados: cualquier cambio en las URLs realizado mediante código no actualizará la base de datos a menos que se aplique este refresco. Para provocarlo en los plugins, podemos utilizar la función flush_rewrite_rules, pero para cambios menores, siempre será más rápido ir a Ajustes >> Permalinks y guardar nuevamente.

Lo primero que haremos es modificar este .htaccess para prevenir algunas inconsistencias SEO en la indexación que podrían surgir si no somos cuidadosos.

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

Es un problema común instalar nuestra web en mibonitodominio.com y descubrir que se puede acceder tanto por mibonitodominio.com como por www.mibonitodominio.com. Aunque esto no representa un gran problema para el SEO, ya que los motores de búsqueda están acostumbrados a estas situaciones y no penalizan severamente, sí puede causar la pérdida de enlaces entre las versiones. Al tener URLs distintas, no sabemos cuál considerará Google como válida ni a cuál enlazarán quienes nos mencionen. Aunque Google reconozca ambas versiones como la misma web, no hay certeza de que los enlaces a una u otra versión contribuyan igualmente al posicionamiento. Normalmente, si existe contenido duplicado y se envían enlaces a ambas versiones, estamos diluyendo la autoridad de ese contenido. Por ello, lo mejor es facilitarle las cosas al algoritmo y asegurarnos de que solo una versión de la web sea visible.

Debemos elegir solo una de las dos direcciones para nuestro sitio. Personalmente, prefiero no usar las «www» en un dominio nuevo. Nuestro dominio real es aquel que aparece sin nada delante, y «www.» es un subdominio de este dominio principal, por lo que, en realidad, estamos proporcionando dos direcciones distintas a los buscadores para nuestro sitio. En el pasado, se adoptó la costumbre de iniciar la parte web con «www» (World Wide Web), dejando el dominio principal para accesos más críticos o simplemente restringidos. Pero cuando usamos un dominio directamente para alojar una web (en el 99.99999% de los casos), esto ya no tiene sentido.

Por lo tanto, la dirección correcta a usar siempre debería ser sin «www». Sin embargo, sabemos cómo es el mundo. También me he encontrado con clientes que piensan que la web está mal hecha porque no comienza por «www»… así que les ofreceré varios métodos para eliminar las webs duplicadas con el .htaccess:

Quitar cualquier subdominio del dominio:
# eliminamos subdominios

RewriteCond %{HTTP_HOST} ^[a-zA-Z0-9-_]+\.mibonitodominio\.com$ [NC]

RewriteRule ^(.*)$ http://mibonitodominio.com/$1 [R=301,QSA,L]
Quitar solo si el subdominio es www:
# eliminamos www

RewriteCond %{HTTP_HOST} ^www\.mibonitodominio\.com$ [NC]

RewriteRule ^(.*)$ http://mibonitodominio.com/$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 ^(.*)$ http://www.mibonitodominio.com/$1 [R=301,QSA,L]

Agrega la parte que te interese (reemplazando mibonitodominio.com por el tuyo) antes de los «RewriteCond» en tu .htaccess.

🗒️ Nota: Deseamos tener una sola versión de la web, pero es preferible que el servidor responda en ambas, redirigiendo una con un 301 sobre la otra, para no perder enlaces, a que una de las dos no exista.

Eliminando las «/» del final de las URLs

Otro aspecto problemático es permitir que WordPress cree URLs con una «/» al final. Esto sucede a menudo, ya que el panel de permalinks ofrece este tipo de URLs.

Aunque hagamos bien en eliminar esta barra del final, es posible que reciban enlaces que terminen en «/». Si seguimos unas normas con las URLs, debemos entender que el símbolo «/» representa un directorio o carpeta en nuestra URL. Por ejemplo, «/cosas/item» significa que la página «item» está dentro de la carpeta «cosas». Al ser un directorio, no tiene sentido terminar las URLs con «/», pues implicaría que cada página de nuestra web es un directorio sin documentos dentro. Aunque esto no sea lo más crucial en SEO, si queremos optimizar adecuadamente una página, es mejor aplicar toda la lógica posible para asegurarnos de que los motores de búsqueda comprendan nuestro propósito.

Volveremos a utilizar el .htaccess para redirigir todo el tráfico que termine en «/» a su página homóloga sin «/»:

# eliminamos / al final de las urls

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.+)/$ /$1 [R=301,L]
🗒️ Nota: Ten cuidado de no añadir esto antes de cambiar tus URLs y eliminar la "/" del final, o tus páginas dejarán de funcionar, ya que el .htaccess redirigirá a una página sin "/", y WordPress solo las reconocerá con "/" al final.

Paso 2: Olvidémonos de la multicategorización

Categorías: pocas y bien pensadas

Uno de los problemas estructurales básicos en desarrollos web complejos es la multicategorización. ¿Qué sucede cuando un ítem está disponible en varias categorías al mismo tiempo?

Como mencionamos anteriormente, las carpetas/directorios de nuestra web deben indicar que el elemento inferior pertenece a la carpeta superior.

Así, cuando disponemos de un sistema de clasificación de contenidos, resulta sencillo determinar cómo crear cada URL. Por ejemplo, si tengo un «pollito» en la categoría «animales», es evidente que mi URL final debería ser algo como «/animales/pollito». Sin embargo, si por alguna razón creo la categoría «cosas pequeñas» y clasifico mi pollito en ambas categorías simultáneamente, surge la duda de cómo crear las URLs. ¿El pollito está en «/animales/pollito» o en «/cosas-pequenas/pollito»? Claramente, no puedo dejarlo en ambas porque se trataría de contenido duplicado. ¿Qué debo hacer?

La solución que adopta la mayoría es eliminar la carpeta inicial y evitar complicaciones. Pero si estamos hablando de un proyecto nuevo, sin duda, existe una mejor opción: diseñar un conjunto de categorías suficientemente estructuradas para que los elementos siempre deban pertenecer a una única categoría.

El mayor logro que podemos alcanzar en la estructura con WordPress es organizar adecuadamente nuestras categorías. Si lo hacemos correctamente, podremos integrarlas en nuestra estructura de URLs, otorgando un sentido semántico profundo a nuestro contenido: los usuarios podrán navegar por las categorías y ver cómo el contenido se encaja realmente dentro de estas.

Otra opción, si nuestro proyecto va a ser lo suficientemente grande, es considerar no solo las categorías sino también sus subcategorías. WordPress permite que una categoría tenga categorías superiores, creando así una dependencia adicional. En nuestro ejemplo anterior, podríamos haber creado la categoría «animales» y dentro de esta, las subcategorías «grandes» y «pequeños», y del mismo modo, crear «minerales» con «grandes» y «pequeños» como subcategorías. Esto permitiría que nuestro querido pollito tuviera una URL como «/animales/pequeños/pollito».

En WordPress (al menos en un WordPress basado en posts), el éxito de nuestra estructura web depende de estudiar detenidamente sus categorías, entendiendo que no deben ser solo una serie de enlaces en la barra lateral, sino una parte esencial de la organización de nuestro contenido.

¿Y los tags cómo los organizamos?

Los tags siempre serán una forma excelente de proporcionar clasificaciones secundarias a los posts, pero eso no significa que debamos incluirlos todos en nuestras URLs. Más adelante, veremos cómo tenerlos en cuenta.

Paso 3: Implementando nuestras URLs basadas en categorías.

Una vez entendido el sistema que utilizaremos para estructurar nuestra web y habiendo definido claramente las categorías que deseamos emplear, es momento de materializar todo esto.

Regresamos a «Ajustes» > «Permalinks» y configuramos WordPress según nuestras preferencias:

  • Establecemos nuestra estructura de posts como: «/%category%/%postname%».
  • En categorías, ahora indicamos que la URL sea «./», lo cual hará que WordPress elimine la indeseable carpeta «/category» de nuestras URLs.
  • En Tags, la decisión dependerá de cómo los utilicemos; pueden tener más sentido algunas configuraciones que otras.

Al actualizar, nuestros posts dependerán de las categorías:

  • Las categorías tendrán su URL desde la raíz.
  • Los posts siempre incluirán la categoría como carpeta superior.
  • Al anidar categorías, estas se separarán automáticamente por «/» en las URLs, haciendo que los posts dependan de la subcategoría.

Por ejemplo, si creé la categoría «animales», después creé la subcategoría «pequeños» indicando que su categoría superior era «animales», y luego creé un post llamado «Pollito» clasificándolo como «pequeño (dentro de animales)», al visitar este post, mi URL será «/animales/pequeños/pollito».

Prueba esto. Es sencillo…

Sin embargo, no todo es perfecto: el clásico problema de «página no encontrada».

Lamentablemente, el sistema de reconocimiento de URLs en WordPress no es infalible. Al final, se trata de una lista de comprobaciones ordenadas, y WordPress aplica esta lista sobre la URL que el usuario está cargando. Cuando encuentra una coincidencia con cualquier tipología de URL, se detiene y busca el contenido correspondiente.

El problema es que las URLs que propongo pueden confundir a este sistema de detección. Las URLs de categorías («/animales» y «/animales/pequeños») no se diferencian mucho de las de los posts, especialmente si combinamos posts asociados a categorías inferiores o superiores.

Un 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»?

Os diré lo que hace:

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 solución es simple: debemos evitar que WordPress pueda interpretar que un post tiene la misma URL que una categoría, diferenciando ligeramente las URLs.

En las categorías estamos limitados, ya que el administrador solo nos permite editar su carpeta anterior (la cual hemos eliminado al configurarla como «./»), por lo que no podemos hacer nada para diferenciar estas URLs de las de los posts.

Donde sí podemos actuar es en los posts, ya que podemos editar completamente su URL. Pero, como mencionamos, nos interesa que esta comience por la categoría y, por supuesto, por coincidencia de palabras clave, debe incluir el nombre del post como parte de ella. ¿Qué opciones tenemos? La solución es simple: añadir algo más al final. No es la opción más elegante, pero entre las disponibles, es la que mejor mantiene nuestra estructura web.

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

Aquí va más por gustos o creencias de cada uno. A continuación, algunas opciones que pueden considerarse y las ventajas de cada una:

Extensión .html:

Siguiendo con la teoría de que las URLs son directorios, los archivos finales podrían tener perfectamente una 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 consideraba más relevante. La verdad es que esta teoría tenía poco fundamento (como si Google no supiese que existe ModRewrite) y actualmente, para ahorrar caracteres, se prefiere no incluir ninguna extensión. Pero eso no significa que incluirla esté mal. Queda un poco anticuado, pero es correcto.

  • Configuración en WordPress: «/%category%/%postname%.html»
  • Ejemplo de URL: «/animales/pequeños/pollito.html»
  • Ventajas: A nivel de estructura del sitio, es correcto y no añadimos más semántica.
  • Inconvenientes: URLs anticuadas y pérdida de varios caracteres.

Nombre de la página o Keyword:

Actualmente, muchas estrategias de keywords SEO en blogs pasan por incluir una coletilla en los títulos al final de las páginas. Esta, en la inmensa mayoría de los casos, es 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, podría querer que todos mis títulos sean «[nombre del post] | Windows 8». Si llevamos a cabo estas prácticas, no sería tan raro que las URLs también terminen con ese título añadido, solucionando nuestro problema de coincidencias.

  • Configuración en WordPress: «/%category%/%postname%-titulo-escrito-por-ti»
  • Ejemplo de URL: «/animales/pequeños/pollito-titulo-escrito-por-ti»
  • Ventajas: La URL sigue siendo actual, sin elementos extraños, y respalda todo el título.
  • Inconvenientes: Pérdida de semántica por apostar por todo el título a la vez y dificultad para cambiar la coletilla con el tiempo (pues se cambiarían todas las URLs).

ID del post:

Otra forma típica de solucionar este problema es añadir el ID del post al final de su URL, evitando así todo conflicto. Esto, además, debería agilizar las consultas internas (al consultar por ID en lugar de por nombre del post), 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).

  • Configuración en WordPress: «/%category%/%postname%-p%post_id%»
  • Ejemplo de URL: «/animales/pequeños/pollito-123»
  • Ventajas: Resulta medianamente natural para el usuario y se añaden pocos caracteres.
  • Inconvenientes: Podrían añadirse aún menos caracteres. Cuando el blog crece, no es extraño encontrarse con 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.

  • Configuración en WordPress: «/%category%/%postname%_»
  • Ejemplo de URL: «/animales/pequeños/pollito_»
  • Ventajas: Solo 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 puede provocar que algunos usuarios lo borren al copiar el enlace por no entenderlo.

Darle la vuelta a los tres anteriores:

Otra opción que puede ser útil en casos muy concretos es empezar con algún añadido en lugar de terminar con él. En ese caso, el añadido deberá estar antes del título del post (pues queremos que la parte inicial de la URL no cambie). El resultado es que tanto los efectos positivos como negativos son más notorios.

  • Configuración en WordPress: «/%category%/elemento-extra-%postname%»
  • Ejemplo de URL: «/animales/pequeños/elemento-extra-pollito»

Como veis, opciones hay muchas, y algunas más que seguro se os 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 hacer una optimización de estructura solo con dos añadidos a un archivo y tocando un formulario es todo un lujo. Me he encontrado con CMSs en los que tenías que hacer cosas mucho más complicadas para identificar URLs y ya no hablemos de organizar el contenido…

Paso 4. Unas normas para darle sentido en nuestro Theme

Por último, os comento algunos detalles para que esta estructura web tenga aún más sentido en nuestro Theme, basándonos en los enlaces que enviamos hacia categorías y tags.

No podemos permitirnos enlazar a todo siempre.

Una estructura donde todas nuestras categorías y tags están siempre enlazados (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 indica que unas páginas son más importantes que otras. Por lo tanto, dentro de la estructura que hemos comentado, debemos hacer que nuestras categorías sean más importantes que los tags y que las categorías principales sean más importantes que sus categorías hijas.

Por lo tanto:

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

Marquemos bien la asociación de posts con sus categorías y tags

Queremos que los posts estén muy ligados semánticamente a sus páginas de categorizació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 toda página que le clasifique.

Por lo tanto:

  • Debemos incluir siempre en el contenido del post, o al final de este, enlaces hacia sus categorías y todos sus tags. Sobre todo en el caso de los tags, esto representará que, cuantos más posts existan, más potente será el tag, pues más páginas le envían enlaces.
  • Etiquetemos bien estos enlaces con rel=»tag» (por defecto, muchas funciones de WordPress ya generan así estos enlaces).
  • Tengamos cuidado de no enviar este mismo tipo de enlaces hacia otras zonas. Marquemos semánticamente bien dónde empieza y acaba el contenido del post y enviemos enlaces hacia otras partes, como posts relacionados, siguiente, anterior, promociones, etc., fuera de estos bloques.

Y, por último, evitemos todo lo posible los enlaces hacia las arquitecturas de URLs secundarias que maneja 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 como se presentan en la mayoría de los temas, solo generan confusión para los buscadores y tampoco aportan nada a los usuarios que no tienen interés en conocer únicamente nuestros posts de marzo de 2010.

Eliminemos esos enlaces si no vamos a darles uso. Asimismo, ya que estamos limpiando, pensemos en la necesidad de cada uno de los enlaces de nuestro tema: si no tiene utilidad real, borrémoslo.

Y eso es todo lo que tengo que decir.

Hemos dado un pequeño repaso a cómo organizar una estructura de posts en WordPress de manera organizada para que tanto los buscadores como los usuarios la entiendan. ¿Es este todo el SEO que se puede hacer con un blog? No, en absoluto, y menos aún con la plataforma WordPress, que tiene muchas formas de usarse aparte de con blogs: estructuras de páginas, publicaciones personalizadas, taxonomías personalizadas, varios plugins, etc.

Existen muchos más detalles a tener en cuenta sobre tu blog/página; aquí solo hemos hablado de estructura de una manera muy genérica. Lo demás hay que trabajarlo por otras vías, pero, ¿acaso no es divertido que no se trate solo de esto?

ARTÍCULO RELACIONADO CON:

Iñaki Huerta
CEO de IKAUE

Director de IKAUE. Analista Digital y SEO hace más de 15 años. Internet Lover, Creador de Hilillos y DataHacker.

También te puede interesar

¡Suscríbete!

RECIBE NUESTRA NEWSLETTER

Registrar nueva cuenta

IKAUE MARKETING ONLINE, S.L. es la Responsable del Tratamiento de tus datos, con la finalidad de gestionar tu registro y remitirte nuestra Newsletter con las últimas novedades y/o promociones. Tienes derecho de acceso, rectificación, supresión, limitación, oposición al tratamiento y portabilidad. Puedes ejercitar tus derechos [email protected]. Más información en la Política de privacidad.