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
- ¿Qué versión de Joomla usar en octubre de 2026?
- ¿Cómo se activan las URL amigables en Joomla?
- ¿Cómo evita Joomla el contenido duplicado?
- ¿Cómo se configura el robots.txt de Joomla?
- ¿Qué cabeceras de seguridad trae Joomla de serie?
- ¿Cómo se añaden datos estructurados en Joomla sin extensiones?
- ¿Y el sitemap XML?
- Cómo comprobarlo
- Qué hace SmoothSeen con esto
- Qué hacer esta semana
- Preguntas frecuentes
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.txto 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-Optionsviene 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:
- Search Engine Friendly URLs (URL amigables):
Yes. Cambiaindex.php?option=com_content&view=article&id=1por rutas legibles. - Use URL Rewriting (usar reescritura de URL):
Yes, pero antes prepara el servidor. En Apache y LiteSpeed, renombrahtaccess.txta.htaccess; en IIS,web.config.txtaweb.config; en Nginx hay que configurar el servidor2. Si activas la opción sin hacerlo, las páginas interiores pueden dejar de cargar. - Add Suffix to URL (añadir sufijo):
No, salvo que ya tengas URL con.htmlindexadas. - Unicode Aliases (alias Unicode):
Noen una web en español. ConNo, Joomla translitera los alias (la «ñ» se convierte en «n»). - 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.comyhttps://www.example.comcuentan 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.phpde 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.xmlEl 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-agepropuesto de un año - Qué hacer
- Activarla con un
max-agecorto 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.
- 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.
- 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.
- Para cualquier tipo que no esté en la lista, el plugin Schema.org - Custom acepta JSON-LD propio y avisa si falta
@contexto@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 mostrarx-frame-options,referrer-policy,x-content-type-optionsy, 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
- 1Joomla! Roadmap, Joomla! Developer Network, consultada el 07-10-2026.
- 2Cadenas de la Configuración global (com_config.ini), repositorio oficial joomla/joomla-cms, rama 6.1-dev, consultado el 07-10-2026.
- 3htaccess.txt, repositorio oficial joomla/joomla-cms, rama 6.1-dev, consultado el 07-10-2026.
- 4Cadenas del plugin System - SEF (plg_system_sef.ini), repositorio oficial joomla/joomla-cms, rama 6.1-dev, consultado el 07-10-2026.
- 5plugins/system/sef/src/Extension/Sef.php, función onAfterDispatch, repositorio oficial joomla/joomla-cms, rama 6.1-dev, consultado el 07-10-2026.
- 6How to specify a canonical URL with rel="canonical" and other methods, Google Search Central, actualizada el 10-07-2026.
- 7Cadenas comunes del panel (joomla.ini), repositorio oficial joomla/joomla-cms, rama 6.1-dev, consultado el 07-10-2026.
- 8installation/src/Model/CleanupModel.php, repositorio oficial joomla/joomla-cms, rama 6.1-dev, consultado el 07-10-2026.
- 9robots.txt.dist, repositorio oficial joomla/joomla-cms, rama 6.1-dev, consultado el 07-10-2026.
- 10How Google interprets the robots.txt specification, Google Search Central, actualizada el 31-08-2026.
- 11Overview of OpenAI Crawlers, OpenAI, consultada el 07-10-2026.
- 12Does Anthropic crawl data from the web, and how can site owners block the crawler?, Anthropic, actualizada el 07-04-2026.
- 13AI features and your website, Google Search Central, actualizada el 10-12-2025.
- 14installation/sql/mysql/base.sql (extensiones activadas al instalar), repositorio oficial joomla/joomla-cms, rama 6.1-dev, consultado el 07-10-2026.
- 15Security HTTP Headers, Joomla! User Manual, consultada el 07-10-2026.
- 16Cadenas del plugin System - HTTP Headers (plg_system_httpheaders.ini), repositorio oficial joomla/joomla-cms, rama 6.1-dev, consultado el 07-10-2026.
- 17Strict-Transport-Security header, MDN Web Docs, actualizada el 11-09-2026.
- 18Schema.org System Plugin, Joomla! User Manual, consultada el 07-10-2026.
- 19Cadenas del plugin System - Schema.org (plg_system_schemaorg.ini), repositorio oficial joomla/joomla-cms, rama 6.1-dev, consultado el 07-10-2026.
- 20Cadenas del plugin Schema.org - Custom (plg_schemaorg_custom.ini), repositorio oficial joomla/joomla-cms, rama 6.1-dev, consultado el 07-10-2026.
- 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/
Sigue leyendo
Posicionamiento web (SEO): qué es, cómo funciona y cómo mejorarlo en 2026
Qué es el posicionamiento web, cómo decide Google qué páginas muestra y una checklist priorizada para mejorarlo con herramientas gratuitas.
.htaccess y caché: activar gzip y Brotli, la caché del navegador y bloquear bots de IA en Apache
Cómo activar gzip y Brotli, configurar la caché del navegador y vetar bots de IA de entrenamiento en el .htaccess de Apache sin salir de ChatGPT. Probado.
.htaccess y HTTPS: redirigir http a https, activar HSTS y cabeceras de seguridad en Apache
Cómo redirigir http a https en .htaccess o en el VirtualHost de Apache, activar HSTS sin riesgos y añadir cabeceras de seguridad. Configuración probada.