Saltar al contenido

SEO en Joomla: URL amigables, canonical, cabeceras de seguridad y schema.org

Publicado el 07-10-20269 min de lecturaPor la redacción de SmoothSeen

El SEO de Joomla se resuelve casi entero con el núcleo: URL amigables y reescritura en la Configuración global, canonical y redirecciones con el plugin System - SEF, cabeceras de seguridad con System - HTTP Headers y datos estructurados con los plugins Schema.org. Solo el sitemap XML necesita una extensión. Todo lo que sigue vale para Joomla 5.4 y 6.1.

Lo esencial

  • La versión actual es Joomla 6.1; Joomla 5.4 deja de recibir correcciones el 13-10-2026 y solo tendrá parches de seguridad hasta el 12-10-2027.
  • Joomla solo añade la etiqueta canonical si rellenas el campo Site Domain del plugin System - SEF; sin él, no hay canonical de serie.
  • El plugin System - HTTP Headers viene activo y envía X-Frame-Options, Referrer-Policy y Cross-Origin-Opener-Policy; HSTS y CSP hay que activarlos.
  • Desde Joomla 5, el núcleo genera JSON-LD con nueve plugins Schema.org (Article, BlogPosting, Book, Event, JobPosting, Organization, Person, Recipe y Custom); no hay tipo LocalBusiness ni Product.
  • El núcleo no genera sitemap XML: hace falta una extensión.

Para comprobarlo en tu web: Auditoría SEO

En esta página

Joomla es un gestor de contenidos de código abierto en PHP. Controla las URL, los títulos y metadatos de cada página, el canonical, el robots.txt (es un fichero en la raíz), varias cabeceras HTTP y el marcado schema.org. No controla el servidor: la redirección de http a https a nivel de servidor, la compresión y la caché del navegador dependen de Apache, Nginx o tu alojamiento. Las etiquetas del panel se citan en inglés, tal como salen del código de Joomla, con su traducción entre paréntesis; con el idioma español instalado verás el texto traducido en el mismo sitio.

¿Qué versión de Joomla usar en octubre de 2026?

La rama actual es Joomla 6, que salió el 14-10-2025; su última versión es la 6.1.4 y la 6.2.0 está prevista para el 13-10-20261. Joomla 5.4 está en modo solo correcciones hasta el 13-10-2026 y recibirá parches de seguridad hasta el 12-10-20271. Si sigues en la 5, planifica el salto a la 6 este año. Las opciones de SEO de esta guía existen en las dos ramas.

Qué
URL limpias sin index.php
Lo hace Joomla
Sí, con reescritura activada
Lo haces tú (o el servidor)
Renombrar htaccess.txt o configurar Nginx
Qué
Canonical
Lo hace Joomla
Sí, si rellenas Site Domain
Lo haces tú (o el servidor)
Revisar extensiones que añadan otro
Qué
robots.txt
Lo hace Joomla
Lo crea al instalar
Lo haces tú (o el servidor)
Añadir Sitemap y tu política de IA
Qué
Cabeceras de seguridad
Lo hace Joomla
X-Frame-Options, Referrer-Policy, COOP, HSTS y CSP
Lo haces tú (o el servidor)
X-Content-Type-Options viene del .htaccess
Qué
Datos estructurados
Lo hace Joomla
Organization, Person, Article y 6 tipos más
Lo haces tú (o el servidor)
LocalBusiness o Product con el plugin Custom
Qué
Sitemap XML
Lo hace Joomla
No
Lo haces tú (o el servidor)
Extensión del directorio oficial

¿Cómo se activan las URL amigables en Joomla?

Las opciones están en System > Global Configuration (Sistema > Configuración global), pestaña Site, sección SEO2:

  1. Search Engine Friendly URLs (URL amigables): Yes. Cambia index.php?option=com_content&view=article&id=1 por rutas legibles.
  2. Use URL Rewriting (usar reescritura de URL): Yes, pero antes prepara el servidor. En Apache y LiteSpeed, renombra htaccess.txt a .htaccess; en IIS, web.config.txt a web.config; en Nginx hay que configurar el servidor2. Si activas la opción sin hacerlo, las páginas interiores pueden dejar de cargar.
  3. Add Suffix to URL (añadir sufijo): No, salvo que ya tengas URL con .html indexadas.
  4. Unicode Aliases (alias Unicode): No en una web en español. Con No, Joomla translitera los alias (la «ñ» se convierte en «n»).
  5. Site Name in Page Titles (nombre del sitio en el título): After (después) añade el nombre de la web al final de cada <title>.

En la pestaña Server (Servidor), Force HTTPS (forzar HTTPS) tiene tres valores: None, Administrator Only y Entire Site. Elige Entire Site solo cuando el certificado funcione, y activa Behind Load Balancer si el TLS termina en un proxy o balanceador2.

Renombrar htaccess.txt trae un regalo: el fichero de Joomla 6.1 ya envía X-Content-Type-Options: nosniff y desactiva el JavaScript dentro de los SVG que se abren directamente3.

¿Cómo evita Joomla el contenido duplicado?

Con el plugin System - SEF. La propia Configuración global avisa de que hay más ajustes de SEO ahí2. Búscalo en System > Plugins (Sistema > Plugins) y revisa estas opciones4:

Opción
Site Domain (dominio del sitio)
Qué hace
Dominio preferido para el canonical; https://example.com y https://www.example.com cuentan como dominios distintos
Valor sugerido
Tu dominio con https://
Opción
Strict Routing (enrutado estricto)
Qué hace
Redirige con 301 las URL que el router considera duplicadas
Valor sugerido
Activado
Opción
Strict handling of index.php
Qué hace
Quita index.php de las URL y redirige las peticiones que lo lleven
Valor sugerido
Activado si usas reescritura
Opción
Trailing slash for URLs (barra final)
Qué hace
Fuerza URL con o sin barra final, con redirección; solo sin sufijo
Valor sugerido
La forma que ya tengas indexada

El detalle que casi nadie conoce está en el código del plugin: si Site Domain está vacío, Joomla no añade ninguna etiqueta canonical. Cuando lo rellenas, el plugin pone <link rel="canonical"> con tu dominio y la ruta y los parámetros de la URL actual, o reescribe con tu dominio el canonical que haya puesto un componente5. Google trata el canonical como una indicación fuerte para elegir la URL representativa entre duplicados6, así que rellenar ese campo es el paso de SEO más barato de Joomla.

El título y la descripción de cada página se escriben en dos sitios. En el elemento de menú, la pestaña Page Display (visualización de página) tiene Browser Page Title (título de la página en el navegador) y la pestaña Metadata (metadatos) tiene Meta Description y Robots. En el artículo, la pestaña Publishing (publicación) tiene Meta Description, Keywords y Robots7.

¿Cómo se configura el robots.txt de Joomla?

Joomla trae un robots.txt.dist y el instalador lo renombra a robots.txt si no existe ninguno8. Las actualizaciones no tocan tu robots.txt: dejan un robots.txt.dist nuevo para que compares. Si Joomla está en una subcarpeta, el fichero tiene que ir a la raíz del dominio con la carpeta delante de cada ruta (Disallow: /joomla/administrator/)9.

Este es el de Joomla 6.1 con dos añadidos: la línea Sitemap, que Google exige con URL completa10, y un grupo para los rastreadores de entrenamiento. Lo comprobamos con Protego, que aplica las reglas de Google: los artículos, /images/ y /media/ (donde Joomla guarda CSS y JavaScript desde la versión 4) quedan abiertos para Googlebot, OAI-SearchBot, Claude-SearchBot y PerplexityBot; el panel y la API quedan cerrados.

User-agent: *
Disallow: /administrator/
Disallow: /api/
Disallow: /bin/
Disallow: /cache/
Disallow: /cli/
Disallow: /components/
Disallow: /includes/
Disallow: /installation/
Disallow: /language/
Disallow: /layouts/
Disallow: /libraries/
Disallow: /logs/
Disallow: /modules/
Disallow: /plugins/
Disallow: /tmp/

# Entrenamiento de modelos: vetarlo no te saca de ChatGPT ni de Google
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: Google-Extended
User-agent: Applebot-Extended
User-agent: CCBot
Disallow: /

Sitemap: https://www.ejemplo.es/sitemap.xml

El segundo grupo es opcional y editorial. GPTBot y ClaudeBot sirven para entrenar modelos; quienes deciden si ChatGPT o Claude pueden citarte son OAI-SearchBot y Claude-SearchBot, y Google-Extended no afecta a Google Search111213.

¿Qué cabeceras de seguridad trae Joomla de serie?

Joomla incluye desde la versión 4 el plugin System - HTTP Headers, y en una instalación nueva viene activado1415. Lo encuentras en System > Plugins. Esto es lo que envía y lo que te toca decidir16:

Cabecera
X-Frame-Options
Por defecto
Activada, SAMEORIGIN
Qué hacer
Dejarla
Cabecera
Referrer-Policy
Por defecto
strict-origin-when-cross-origin
Qué hacer
Dejarla
Cabecera
Cross-Origin-Opener-Policy
Por defecto
same-origin
Qué hacer
Dejarla; revísala si un pago o un inicio de sesión en ventana emergente deja de funcionar
Cabecera
Strict-Transport-Security (HSTS)
Por defecto
Desactivada; max-age propuesto de un año
Qué hacer
Activarla con un max-age corto y subirlo después
Cabecera
Content-Security-Policy
Por defecto
Desactivada; al activarla, Report-Only viene marcado
Qué hacer
Empezar en Report-Only con la opción Nonce
Cabecera
Force HTTP Headers (forzar cabeceras)
Por defecto
Vacío
Qué hacer
Añadir Permissions-Policy si la necesitas

Dos avisos. La guía de Joomla sobre esta pantalla recomienda un max-age de uno o dos años y marcar Preload15. Preload es la señal para entrar en la lista de precarga de los navegadores, que obliga a usar HTTPS en el dominio y en todos los subdominios, y salir de ella tarda meses1617. Empieza con un max-age de un día, comprueba que todo, subdominios incluidos, funciona por https, y solo después súbelo y valora Preload.

El segundo: la CSP rompe cosas si la aplicas de golpe. Activa Content-Security-Policy con Report-Only, revisa los avisos en la consola del navegador y añade las directivas que falten. Joomla puede poner un nonce a los scripts y estilos que carga con su API, pero no a los que mete a mano una extensión. Si prefieres poner las cabeceras en el servidor, la guía de Apache .htaccess con HTTPS, HSTS y cabeceras trae los bloques listos; no las dupliques en los dos sitios.

¿Cómo se añaden datos estructurados en Joomla sin extensiones?

Desde Joomla 5, el núcleo trae un plugin de sistema System - Schema.org y un plugin por tipo de schema18. En la versión 6.1 los tipos son Article, BlogPosting, Book, Event, JobPosting, Organization, Person, Recipe y Custom, y todos vienen activados en una instalación nueva14. Genera JSON-LD en el <head> de la página19.

  1. Ve a System > Plugins, abre System - Schema.org y rellena Base Type (Organization o Person), Name, Image y Social Media Accounts. Hasta que lo guardes, la pestaña Schema de los artículos solo muestra un aviso de configuración pendiente19.
  2. En cada artículo, abre la pestaña Schema, elige el tipo (Article o BlogPosting en un blog, Event en una agenda, Recipe en una receta) y rellena los campos.
  3. Para cualquier tipo que no esté en la lista, el plugin Schema.org - Custom acepta JSON-LD propio y avisa si falta @context o @type20. Es la vía para un LocalBusiness con dirección y horario en la página de contacto.

No uses Custom para marcar FAQ o HowTo pensando en Google: HowTo dejó de mostrarse como resultado enriquecido en 2023 y FAQ dejó de mostrarse en 202621.

¿Y el sitemap XML?

El núcleo de Joomla no genera sitemap XML. Necesitas una extensión del Joomla Extensions Directory; elige una que se actualice para Joomla 6 y que excluya los elementos con noindex. Después añade la línea Sitemap: al robots.txt y envía el sitemap en Search Console.

Cómo comprobarlo

  • Canonical: abre el código fuente de un artículo y busca rel="canonical". Si no aparece, revisa Site Domain.
  • Cabeceras: curl -I https://www.ejemplo.es/ debe mostrar x-frame-options, referrer-policy, x-content-type-options y, si la activaste, strict-transport-security. El HTTP Observatory de Mozilla las puntúa.
  • Datos estructurados: pasa un artículo y la portada por la Prueba de resultados enriquecidos.
  • robots.txt y sitemap: el informe de robots.txt y el de sitemaps de Search Console.

Qué hace SmoothSeen con esto

SmoothSeen revisa en una página de tu web lo que configura esta guía: robots.txt, sitemap, canonical y noindex, títulos y descripciones, datos estructurados, HTTPS y la redirección a https, y las cabeceras de seguridad con el HTTP Observatory de Mozilla. En la parte de IA comprueba qué rastreadores permite tu robots.txt, separando búsqueda de entrenamiento, y si el servidor responde 403 a alguno de ellos mientras sirve la página a un navegador.

Qué hacer esta semana

Abre el plugin System - SEF y rellena Site Domain con tu dominio en https://. Después activa HSTS en System - HTTP Headers con un max-age de un día y comprueba la cabecera con curl -I. Para ver el resto de la lista medido, haz una auditoría SEO con SmoothSeen.

Preguntas frecuentes

¿Por qué Joomla no pone etiqueta canonical en mis páginas?

Porque el plugin System - SEF solo la añade cuando el campo Site Domain tiene un valor. Es una decisión del código del plugin, no un fallo de tu plantilla. Rellénalo con el dominio preferido, incluido https:// y con o sin www según cómo esté indexada tu web, y vacía la caché de Joomla para que las páginas guardadas se regeneren con la etiqueta.

¿Tengo que renombrar htaccess.txt si mi servidor es Nginx?

No. Nginx no lee ficheros .htaccess: la reescritura de URL se configura en el bloque del servidor, enviando a index.php las peticiones que no correspondan a un fichero. Joomla enlaza desde la propia opción Use URL Rewriting a sus notas de alojamiento para Nginx. Ten en cuenta que la cabecera X-Content-Type-Options que trae el .htaccess también tendrás que ponerla en Nginx.

¿Activo HSTS Preload desde el plugin de Joomla?

Solo cuando lleves semanas con HSTS funcionando sin problemas, con max-age de dos años y todos los subdominios servidos por HTTPS con certificado válido. El propio plugin advierte de que salir de la lista de precarga lleva meses. Para la mayoría de webs, HSTS sin Preload ya protege a quien visita la web.

¿Los plugins Schema.org sustituyen a una extensión de SEO?

Cubren los tipos más comunes de una web de contenidos y la identidad de la organización, sin instalar nada. No crean sitemap, no gestionan redirecciones y no tienen tipos de comercio electrónico. Si tu web es un blog, una agenda o una web corporativa, probablemente te basten; si vendes productos, necesitarás algo más.

Fuentes

  1. 1Joomla! Roadmap, Joomla! Developer Network, consultada el 07-10-2026.
  2. 2Cadenas de la Configuración global (com_config.ini), repositorio oficial joomla/joomla-cms, rama 6.1-dev, consultado el 07-10-2026.
  3. 3htaccess.txt, repositorio oficial joomla/joomla-cms, rama 6.1-dev, consultado el 07-10-2026.
  4. 4Cadenas del plugin System - SEF (plg_system_sef.ini), repositorio oficial joomla/joomla-cms, rama 6.1-dev, consultado el 07-10-2026.
  5. 5plugins/system/sef/src/Extension/Sef.php, función onAfterDispatch, repositorio oficial joomla/joomla-cms, rama 6.1-dev, consultado el 07-10-2026.
  6. 6How to specify a canonical URL with rel="canonical" and other methods, Google Search Central, actualizada el 10-07-2026.
  7. 7Cadenas comunes del panel (joomla.ini), repositorio oficial joomla/joomla-cms, rama 6.1-dev, consultado el 07-10-2026.
  8. 8installation/src/Model/CleanupModel.php, repositorio oficial joomla/joomla-cms, rama 6.1-dev, consultado el 07-10-2026.
  9. 9robots.txt.dist, repositorio oficial joomla/joomla-cms, rama 6.1-dev, consultado el 07-10-2026.
  10. 10How Google interprets the robots.txt specification, Google Search Central, actualizada el 31-08-2026.
  11. 11Overview of OpenAI Crawlers, OpenAI, consultada el 07-10-2026.
  12. 12Does Anthropic crawl data from the web, and how can site owners block the crawler?, Anthropic, actualizada el 07-04-2026.
  13. 13AI features and your website, Google Search Central, actualizada el 10-12-2025.
  14. 14installation/sql/mysql/base.sql (extensiones activadas al instalar), repositorio oficial joomla/joomla-cms, rama 6.1-dev, consultado el 07-10-2026.
  15. 15Security HTTP Headers, Joomla! User Manual, consultada el 07-10-2026.
  16. 16Cadenas del plugin System - HTTP Headers (plg_system_httpheaders.ini), repositorio oficial joomla/joomla-cms, rama 6.1-dev, consultado el 07-10-2026.
  17. 17Strict-Transport-Security header, MDN Web Docs, actualizada el 11-09-2026.
  18. 18Schema.org System Plugin, Joomla! User Manual, consultada el 07-10-2026.
  19. 19Cadenas del plugin System - Schema.org (plg_system_schemaorg.ini), repositorio oficial joomla/joomla-cms, rama 6.1-dev, consultado el 07-10-2026.
  20. 20Cadenas del plugin Schema.org - Custom (plg_schemaorg_custom.ini), repositorio oficial joomla/joomla-cms, rama 6.1-dev, consultado el 07-10-2026.
  21. 21Latest Google Search documentation updates, Google Search Central, consultada el 07-10-2026.

Cómo citar este artículo

SmoothSeen. (2026, 7 de octubre). SEO en Joomla: URL amigables, canonical, cabeceras de seguridad y schema.org. https://smoothseen.com/es/blog/joomla-seo/

Quién lo escribe

SmoothSeen es una herramienta de auditoría web que mide el posicionamiento en buscadores y en asistentes de IA y entrega informes con la marca de la agencia.

Este blog es de SmoothSeen: cuando un artículo habla del producto, lo hace sabiendo que es el nuestro. Las cifras de terceros enlazan a su fuente original.

Historial de cambios

  • Primera versión.

Sigue leyendo

SEO en Joomla 5 y 6: URL, cabeceras y schema