SEO para OpenCart

Cómo funciona el SEO en OpenCart: qué resuelve el núcleo, qué hay que activar, qué cambió entre OpenCart 3 y 4 y qué requiere una extensión o código propio.

Publicado por primera vez: 2 jul 2026 · Última actualización: 11 ago 2026 · Avanzado
Idiomas
1 señal de evidencia en esta página

OpenCart es una plataforma de comercio electrónico PHP, autohospedada y de código abierto, que entrega gran parte del SEO desactivado. Las URL amigables exigen activar Use SEO URL y renombrar .htaccess.txt como .htaccess. Las etiquetas canonical son nativas. OpenCart 3 incluía un sitemap XML, pero OpenCart 4 lo eliminó. Los datos estructurados y hreflang no existen en el núcleo.

TL;DR — OpenCart es PHP de código abierto y autohospedado: ofrece un techo SEO alto, pero un punto de partida bajo. Las URL amigables necesitan Use SEO URL = Yes y renombrar .htaccess.txt como .htaccess con mod_rewrite; si falta un paso, devuelven 404. Las palabras clave SEO se introducen manualmente. Las etiquetas canonical son nativas en productos y categorías y neutralizan los duplicados multicategoría. OpenCart 3 incluía Google Sitemap, OpenCart 4 lo eliminó. Los datos estructurados y hreflang no existen en el núcleo.

Evidence for this claim OpenCart's SEO URL feature requires enabling the setting and configuring the server rewrite file. Scope: OpenCart installations using the documented Apache-style setup; server configuration can differ. Confidence: high · Verified: OpenCart documentation: SEO URL Evidence for this claim OpenCart features and bundled extensions vary by major version and should be verified against the installed release. Scope: OpenCart source repository and release-specific behavior. Confidence: high · Verified: OpenCart GitHub repository

El marco: qué es nativo, qué se activa y qué exige una extensión

Gran parte del contenido sobre SEO para OpenCart procede de vendedores de extensiones o de hilos anclados en «OpenCart 1.5/2.x». Es más útil acudir al código distribuido por OpenCart y clasificar cada función en tres grupos.

Nativo y ya correcto: canonical en productos y categorías; un robots.txt estático; campos de título y metadescripción generales y por entidad; salida PHP/Twig renderizada en el servidor y rastreable desde el primer momento.

Nativo pero desactivado: URL SEO —ajuste más renombrado de .htaccess— y palabras clave por producto, categoría o página, manuales y vacías de forma predeterminada.

Ausente del núcleo: sitemap XML en OpenCart 4, cualquier dato estructurado y etiquetas hreflang o rel=alternate; todo ello exige extensión o código de tema.

Ese triaje resume el artículo. A continuación se explica dónde encaja cada elemento y por qué.

Activar URL SEO: la trampa de los dos pasos

De fábrica, OpenCart sirve URL con parámetros. La documentación usa este ejemplo exacto: “Set to Yes to enable friendly URLs (e.g., /iphone instead of /index.php?route=product/product&product_id=42).” (traducción) «Seleccione Sí para activar URL amigables, por ejemplo /iphone en lugar de /index.php?route=product/product&product_id=42». Activarlas requiere dos pasos; omitir el segundo es el problema de soporte más habitual.

Paso 1: el ajuste. En System → Settings → Server, busque Use SEO URL, elija Yes y guarde.

Paso 2: la reescritura del servidor. OpenCart distribuye las reglas en .htaccess.txt, nombre que Apache no lee. La documentación indica: “Apache: Rename htaccess.txt to .htaccess in your root directory and ensure mod_rewrite is enabled.” (traducción) «En Apache, renombre htaccess.txt como .htaccess en el directorio raíz y compruebe que mod_rewrite esté activado». OpenCart 4 todavía lo distribuye así; el archivo lo indica literalmente. Si se omite, la documentación advierte: “SEO URLs require proper server rewrite configuration. Without it, your friendly URLs will return 404 ‘Not Found’ errors.” (traducción) «Las URL SEO requieren una configuración de reescritura correcta; sin ella, las URL amigables devuelven errores 404».

Dos detalles poco mencionados:

  • El renombrado sigue vigente. No es una reliquia de «OpenCart 1.5/2.x»; permanece igual en OpenCart 4.1.0.3. Las versiones nuevas no lo resuelven automáticamente.
  • Es una trampa al actualizar. Cada versión principal vuelve a incluir .htaccess.txt y puede sobrescribir silenciosamente un .htaccess personalizado. Haga una copia antes y compare los archivos después.

Si un producto concreto sigue mostrando product_id= después de ambos pasos, lo habitual es que aún no tenga una palabra clave SEO asignada.

Palabras clave SEO: un campo manual y vacío por defecto

OpenCart no genera slugs a partir de nombres. La palabra clave de cada entidad se rellena y se vincula mediante el sistema Key/Value/Keyword. La documentación describe un producto típico así: “For a typical product page, you would have two entries: 1. Key: route, Value: product/product 2. Key: product_id, Value: 42.” (traducción) «Para una página de producto típica habría dos entradas: la ruta product/product y el product_id 42». Después se asocia una palabra clave a ese par.

Las reglas importantes son:

  • Formato. “Use only lowercase characters (a-z), numbers (0-9), and hyphens (-) or underscores (_). Use a forward slash (/) for nested paths like electronics/phones.” (traducción) «Use solo minúsculas, números, guiones o guiones bajos, y barras para rutas anidadas». Las rutas de categorías también son manuales: “Use forward slashes to indicate category depth (e.g., /clothing/men/shirts)” (traducción) «Use barras para indicar la profundidad».
  • Unicidad. “Keywords MUST be unique for each store/language combination.” (traducción) «Las palabras clave DEBEN ser únicas por combinación de tienda e idioma».
  • Cambiar rompe enlaces. “Changing an existing keyword will break old links. Set up 301 redirects if necessary.” (traducción) «Cambiar una palabra clave rompe los enlaces antiguos; configure redirecciones 301 si es necesario».

En catálogos grandes, rellenarlas a mano es tedioso y explica la oferta de extensiones de slugs automáticos del Marketplace. Es una solución práctica, pero no una función del núcleo, a diferencia de WooCommerce, Shopify o BigCommerce.

Etiquetas canonical: nativas y objeto de un mito

Una afirmación frecuente sostiene que OpenCart carece de canonical y necesita una extensión para el contenido duplicado. Es un mito. El controlador de producto de OpenCart 4 llama a addLink(..., 'canonical'), y la canonical siempre resuelve a la ruta plana product/product&product_id=X, con independencia de la categoría de entrada (product.php). El controlador de categorías hace lo mismo (category.php).

En la práctica, un producto incluido en varias categorías no crea por sí mismo riesgo de duplicación para Google: todas las rutas canonicalizan a la misma URL plana. La URL visible puede variar según las migas de pan o el tema, pero es una cuestión de experiencia y coherencia, no de indexación.

La salvedad está en categorías paginadas: OpenCart autorreferencia la canonical con &page=N en vez de consolidarla. Coincide con la recomendación de Google de dar una canonical propia a cada página. Una canonical es una señal, no una orden; Google lo expresa así: “indicating a canonical preference is a hint, not a rule.” (traducción) «indicar una preferencia canonical es una pista, no una regla».

Sitemap XML: la regresión de OpenCart 3 a 4

Para auditar una tienda actualizada hay que responder a «¿OpenCart tiene sitemap?» con una versión concreta.

  • OpenCart 3 incluía el controlador extension/feed/google_sitemap, un sitemap XML básico activable en Extensions → Feed, presente en el código 3.0.5.0.
  • OpenCart 4 lo eliminó. El controlador equivalente no existe y la antigua URL docs.opencart.com/administration/seo/ devuelve un error. En OpenCart 4 necesita una extensión del Marketplace.

Muchas guías se escribieron para OpenCart 3 y aseguran que hay un sitemap integrado: es cierto en 3 y falso en 4. Google explica que “when creating a sitemap, you’re telling search engines about which URLs you prefer to show in search results,” (traducción) «al crear un sitemap indica qué URL prefiere mostrar», aunque “submitting a sitemap is merely a hint.” (traducción) «enviarlo es solo una pista». Excluya parámetros de filtros, ordenación, carrito y pago, y respete el límite de 50 000 URL o 50 MB por archivo.

robots.txt: un archivo estático que exige revisión

OpenCart incluye un robots.txt estático en la raíz. Su función inicial es impedir el rastreo de parámetros de ordenación, filtros y paginación. En OpenCart 4.1.0.3 dice:

user-agent: *
Disallow: /*?page=$
Disallow: /*&page=$
Disallow: /*?sort=
Disallow: /*&sort=
Disallow: /*?order=
Disallow: /*&order=
Disallow: /*?limit=
Disallow: /*&limit=
Disallow: /*?filter_name=
Disallow: /*&filter_name=
Disallow: /*?filter_sub_category=
Disallow: /*&filter_sub_category=
Disallow: /*?filter_description=
Disallow: /*&filter_description=
Disallow: /*?filter_group=
Disallow: /*&filter_group=

Es un valor razonable y aborda lo que Google denomina “the results of sorting and filtering functions of a category page.” (traducción) «los resultados de las funciones de ordenación y filtrado de una categoría». OpenCart 3.0.5.0 distribuye un archivo distinto: usa User-agent: con mayúscula y añade reglas para Disallow: /*?route=product/search y &route=product/search; OpenCart 4 añade filter_group. Los archivos antes eran idénticos y ahora han divergido. Revise el que ejecuta realmente. Dos detalles más:

  • No declara el sitemap. No incluye una línea Sitemap:; añádala cuando tenga la URL.
  • No se genera ni actualiza automáticamente. Activar URL SEO no lo modifica. Audítelo a mano: robots.txt bloquea rastreo, no indexación; para retirar una página use noindex en una página rastreable.

Metaetiquetas: respaldo general y campos por entidad

OpenCart ofrece título y descripción en dos niveles. Los campos de System → Settings → General son el respaldo global. La documentación califica Meta Title como “(Required)… critical for SEO” (traducción) «obligatorio y esencial para el SEO» y recomienda unas 160 letras para la descripción. Meta Keywords no es una señal de posicionamiento: déjelo vacío. Productos, categorías y páginas informativas tienen su propia pestaña SEO; escriba títulos y descripciones únicos para los elementos clave.

Datos estructurados: totalmente ausentes del núcleo

La plantilla predeterminada de producto de OpenCart 4 no contiene schema.org, application/ld+json ni itemprop: cero coincidencias. El núcleo no incluye Product con precio, disponibilidad o valoración, ni BreadcrumbList u Organization. Es una carencia mayor que en WooCommerce, Shopify o BigCommerce.

Todo depende de una extensión o de un tema personalizado. Para resultados de producto, distinga Merchant Listings, centrado en precio y disponibilidad, de Product Snippets, centrado en valoraciones. Sus propiedades obligatorias son distintas. Añada el marcado con una extensión o JSON-LD escrito en la plantilla; Google recomienda JSON-LD.

Multilingüe y hreflang: un selector, no etiquetas hreflang

El sistema multilingüe de OpenCart es un selector desplegable, no una implementación automática de hreflang. El controlador (language.php) crea una lista para un <select> y no genera hreflang ni rel=alternate en el archivo ni en el motor.

La documentación dice “OpenCart automatically handles the technical SEO aspects of multi-language URLs, but you must provide the localized keywords.” (traducción) «OpenCart gestiona automáticamente los aspectos técnicos de las URL multilingües, pero debe aportar las palabras clave localizadas». Se refiere a generar una variante de URL al cambiar de idioma, no a emitir <link rel="alternate" hreflang="x"> en <head>. Una tienda multilingüe necesita editar el tema o instalar una extensión. Consulte la guía de hreflang.

Headless y API: flexibilidad con responsabilidad SEO

OpenCart incluye una API propia para interfaces personalizadas o headless. La documentación habla de “integrations with inventory systems, ERP software, mobile apps, custom frontends, and other third-party services.” (traducción) «integraciones con inventario, ERP, aplicaciones móviles, interfaces personalizadas y otros servicios». No existe un producto PWA/SSR propio comparable con Hydrogen o Catalyst; las ofertas headless de OpenCart son desarrollos de terceros con React o Vue sobre la API.

Una tienda OpenCart predeterminada se renderiza en el servidor con PHP/Twig, lo que favorece el rastreo. El modo headless cambia esa ventaja por flexibilidad y deja el SSR y el renderizado en manos del equipo que construye la interfaz. OpenCart no ofrece garantías equivalentes a un framework propio. Si elige esa vía, aplique las reglas de SEO para JavaScript.

El blog nativo (CMS → Articles)

OpenCart 4.1.0.0, publicado en enero de 2025, añadió un blog/CMS ligero; sus notas incluyen «Blog system». Se encuentra en CMS → Articles y admite texto enriquecido, imágenes, categorías y campos propios de Meta Title, Meta Description y Meta Keywords. Cierra una carencia histórica que obligaba a usar WordPress o una extensión para marketing de contenidos. Muchas guías son anteriores o se escribieron para OpenCart 3; revise CMS → Articles si utiliza una tienda «OpenCart 4.1 o posterior».

OpenCart frente a plataformas alojadas

OpenCartShopify / BigCommerce
AlojamientoAutohospedado, acceso total al servidorSaaS completamente alojado
URL amigablesDesactivadas (ajuste + renombrar .htaccess)Activas al instalar
SlugsManuales por entidadAutomáticos desde el nombre
CanonicalNativas en producto y categoríaNativas
Sitemap XMLNativo en OC3 / extensión en OC4Generado automáticamente
Datos estructuradosNinguno en el núcleoEn el tema predeterminado
hreflangNinguno en el núcleoManual en BigCommerce / aplicación en Shopify
TechoMuy alto, PHP/MySQL realesLimitado por la plataforma

OpenCart refleja el modelo inverso al SaaS: empieza más abajo, pero no impone techo. Como controla el servidor, nada está bloqueado, aunque tampoco viene resuelto. Configure las URL SEO y .htaccess, complete las palabras clave, verifique las canonical, añada un sitemap —con extensión en OC4—, revise robots.txt e implemente schema y hreflang. Así, una tienda OpenCart puede competir con cualquier plataforma.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.