Guide Sitecore SEO

Comment faire a Sitecore site classer — le deux platforms que modifier tout (XP vs XM Cloud), ce que SXA donne vous out de le box et ce que il ne fait pas, et le plateforme-spécifique traps que catch enterprise teams: le par défaut robots.txt que bloque chaque robot d’exploration, aliases que créer contenu dupliqué à HTTP 200, et metadata que silently fails à inherit parce que blank n’est pas NULL.

Première publication : 27 juin 2026 · Dernière mise à jour : 3 août 2026 · Avancé

Sitecore est an enterprise DXP que ships avec presque aucun SEO functionality out de le box — et le deux produit lines behave very differently. Sitecore XP est traditional serveur-rendu .NET; XM Cloud (renamed SitecoreAI dans Sitecore's actuel docs) est headless SaaS où a Suivant.js front fin (via JSS, maintenant publié as Contenu SDK) contrôle le HTML et vous manage SEO avec Suivant.js metadata APIs. SXA ajoute le basics (sitemap, robots.txt management, metadata champs) mais tout encore nécessite configuration. Three Sitecore-spécifique traps catch teams: le par défaut robots.txt bloque chaque robot d’exploration si le robots champ est left blank (vide ≠ permissive); élément aliases servir HTTP 200 on les deux URLs, creating vrai contenu dupliqué que canonical ne fait pas corriger automatiquement; et blank metadata champs ne pas fall back à Standard Valeurs unless 'Reset Blank' est enabled, parce que blank n’est pas NULL. On le enterprise scale Sitecore lives à, governance — a base SEO template, validation règles, environment contrôler — matters as beaucoup as quelconque unique paramètre.

«> TL;DR — Sitecore ships with almost no SEO functionality; SXA adds the basics

but needs configuration. The two platforms diverge completely: XP is server-rendered .NET (crawlers see finished HTML, personalization renders server-side); XM Cloud is headless, where a Next.js front end controls the HTML and you manage SEO with Next.js metadata APIs (generateMetadata, MetadataRoute) — with SSG/ISR the recommended rendering modes. The platform-specific traps: the default robots.txt blocks all crawlers when the field is blank; item aliases return HTTP 200 on both URLs (true duplicate content, no canonical fix by default); and blank metadata fields don’t inherit Standard Values unless “Reset Blank” is enabled (blank ≠ NULL). At Sitecore’s enterprise scale, governance — a base SEO template, validation rules, environment control — is the real work. (Naming note: Sitecore’s docs now call the XM Cloud product SitecoreAI; the architecture below is unchanged.) » (Traduction) (Résumé en français de la section seize, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

Preuve à l’appui de cette affirmation The article's described sitecore-seo capabilities must be evaluated against the platform's current documentation rather than assumed to be search-engine behavior. Portée : Platform-specific capability documentation. Niveau de confiance : élevé · Vérifié : Sitecore: SEO Preuve à l’appui de cette affirmation Regardless of platform, Google needs crawlable URLs, accessible rendered content, descriptive metadata, and valid search directives. Portée : Google requirements independent of platform. Niveau de confiance : élevé · Vérifié : Google Search Central: SEO Starter Guide

Two platforms, two complètement différent SEO models

Le unique la plupart important chose à establish avant touching n’importe quoi: qui Sitecore sont vous on? Le produit nom est le même; le SEO mechanics ne sont pas.

  • Sitecore XP (Experience Plateforme). Traditional .NET, serveur-rendu via Razor/MVC, deployed on-premise or dans managed cloud. Googlebot généralement receives finished HTML. SEO est managed à l’intérieur Sitecore — dans templates, Standard Valeurs, et requête pipelines.
  • XM Cloud. Headless SaaS. Sitecore stores le contenu et exposes il over a GraphQL API (Experience Edge); a decoupled front fin — presque toujours Suivant.js construit avec Sitecore JSS (JavaScript Services) — renders le HTML. SEO lives dans le Suivant.js application couche. Sitecore holds le contenu; Suivant.js contrôle le sortie.

A naming remarque si vous êtes checking Sitecore’s propre docs pendant que reading ce: as de mid-2026, Sitecore’s documentation site a renamed le composable SaaS produit depuis “XM Cloud” à SitecoreAI — le old doc.sitecore.com/xmc/... et developers.sitecore.com/learn/accelerate/xm-cloud/... URL paths maintenant redirection à .../sai/.../sitecoreai/... paths, et le plateforme’s propre landing page décrit il as “a cloud-native, SaaS, hybrid headless digital experience plateforme.” Le architecture ce article décrit est unchanged — Experience Edge, GraphQL, a decoupled Suivant.js front fin — mais le front-end SDK est maintenant publié as Contenu SDK (ouvrir source, Suivant.js-premier) plutôt que sous le JSS nom, et vous’ll voir “SitecoreAI” plutôt que “XM Cloud” dans actuel screenshots et menu étiquettes. j’ai kept “XM Cloud” dans ce article parce que c’est encore le term la plupart practitioners recherche pour et la plupart existing implementations exécuter on, mais ne pas être thrown si votre sitecore rep or le Cloud Portal maintenant dit SitecoreAI — même plateforme, même SEO mechanics ci-dessous.

Dans les deux cas le practical baseline est le même. As Fishtank’s Marcel put il back dans 2018, “Sitecore ships avec virtually aucun SEO functionality (avec le exception de SXA qui inclut some basics).” c’est encore le correct mental model. SXA (Sitecore Experience Accelerator) est le couche que donne vous a sitemap module, robots.txt management dans le contenu tree, et standardized metadata champs. Sans il, tout de que est custom development.

Ce est squarely enterprise SEO territory. Sitecore implementations involve dedicated developers et solution partners, et — as j’ai written à propos de enterprise sites généralement — “le plus probable vous sont à exécuter dans plusieurs tech stacks,” legacy systèmes, et split ownership à travers sections. Garder que dans mind: on Sitecore, le corriger pour an SEO problème est souvent a template modifier or a pipeline override owned par a developer, pas a paramètre vous flip yourself.

Metadata — et le blank-vs-NULL trap

SEO champs (page titre, meta description, Ouvrir Graph balises) actif dans votre page données templates. Le clean modèle est a base SEO template que chaque page template inherits depuis, donc le champs exist everywhere. Ken Gray de Konabos notes le par défaut gap directement: “out-de-le-box, Sitecore’s données templates pourrait pas inclure some de le Meta Données champs.”

Standard Valeurs let vous définir sensible defaults pour ceux champs (Par exemple a $name token as a titre fallback). Mais ici’s le sitecore-spécifique trap que produces manquant metadata à scale. Sitecore’s propre docs sont explicit: “Si le valeur de a champ est NULL, le élément contient le standard valeur pour que champ as défini dans le données template pour que élément.” Le catch est que a blank champ n’est pas NULL. Quand a contenu author clears a meta description, il becomes blank — et a blank champ fait pas fall back à le Standard Valeur unless “Reset Blank” est enabled on que champ. Le résultat est pages rendu <meta name="description" content=""> au lieu de inheriting a par défaut. On a grand site, c’est thousands de vide descriptions nobody prévu.

Le corriger est twofold: enable “Reset Blank” on metadata champs où a fallback est desired, et ajouter validation règles que enforce non-empty titles et descriptions (et character limites) donc authors ne peut pas silently ship blanks.

URL management et le alias trap

«Sitecore generates URLs from the content-tree path by default; clean URLs come from SXA settings or custom item resolvers. » (Traduction) (Résumé en français de la section vingt-neuf, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

Le trap est élément aliases — alternate URLs vous pouvez attach à quelconque élément. Ils regarder harmless et ils ne sont pas SEO-neutral. As Dheer Rajpoot documented, “aucun redirection (aucun 301 or 302 Code d’état HTTP) se produit quand vous sont en utilisant aliases dans Sitecore,” qui signifie “plusieurs URLs va être créé pour a unique page URL.” Les deux l’URL canonique et le alias retourner HTTP 200 avec identical contenu — genuine contenu dupliqué, et Sitecore fait pas auto-emit a balise canonical à resolve il.

Vous have two governance-grade fixes:

  1. Override le AliasResolver dans le HttpRequest pipeline à inject a balise canonical pointing à le réel URL, or
  2. Modify le alias pipeline à problème a 301 redirection au lieu de diffusion le alias directement.

Mon recommendation est le deuxième: treat aliases as redirections, pas alternate accès URLs. Ken Gray’s advice s’applique broadly ici — “utiliser Sitecore’s canonical lien management à specify le preferred version de une URL” — mais on aliases précisément, a 301 est cleaner que relying on canonical hints.

Sitemaps

«On SXA, configure the sitemap at site/Settings → Search Engines Sitemap → Sitemap Mode. Two relevant modes: Stored in cache (the default — regenerates dynamically; good for frequently updated or Azure-hosted sites) and Stored in file (a static file; better for large sites that change infrequently, avoiding regeneration overhead). SXA automatically appends the sitemap URL to robots.txt, and the sitemap lives at /sitemap.xml. A common failure: if TargetHostName isn’t configured, the sitemap returns a 404. » (Traduction) (Résumé en français de la section trente-cinq, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«On XM Cloud + Next.js, generate the sitemap programmatically with MetadataRoute.Sitemap, querying Experience Edge over GraphQL — which lets you exclude non-indexable URLs at the application layer. Sitecore’s own guidance notes that “Next.js offers built-in sitemap and robots.txt generation.” » (Traduction) (Résumé en français de la section trente-six, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«## Robots.txt — the default that blocks everything » (Traduction) (Résumé en français de la section trente-sept, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«This is the Sitecore trap with the highest blast radius. On SXA, robots.txt is configured in the content tree (site Settings → Robots content field), and you must republish the site after a change. The gotcha, straight from Sitecore’s docs: “If no rules are added, the system writes: ‘User-agent: * Disallow: /’” — which blocks every crawler. An empty robots field is not a permissive robots.txt; it’s a site-wide block. You must explicitly set: » (Traduction) (Résumé en français de la section trente-huit, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

User-agent: *
Allow: /

«On most platforms a missing robots.txt means “crawl everything.” On Sitecore it can mean the opposite, so verifying production robots.txt is a non-negotiable launch step. On XM Cloud + Next.js, use MetadataRoute.Robots for a code-driven, type-safe robots.txt. Separately, CM (Content Management) instances and QA/staging environments should always disallow all — only the CD (Content Delivery) production instance should be crawlable. » (Traduction) (Résumé en français de la section quarante, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«## Multilingual, hreflang, and multisite » (Traduction) (Résumé en français de la section quarante et un, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«Sitecore stores language versions as separate versions of the same item, not separate items. That, combined with language fallback (item-level or the more granular field-level, e.g. an es-MX → es-ES → en chain), can serve the same content at multiple language URLs — a duplicate-content vector unless hreflang signals the relationship. And hreflang is not automatic in standard Sitecore; it has to be added to templates (SXA can generate it when configured), with full absolute URLs, bidirectional references, and an x-default. As John Mueller put it (cited by Jakub Koba), “TBH hreflang is one of the most complex aspects of SEO (if not the most complex one).” Don’t underestimate it. » (Traduction) (Résumé en français de la section quarante-deux, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«Sitecore also natively supports multisite — many sites in one install, sometimes sharing content. Shared content across site boundaries needs a deliberate canonical strategy, and each site needs its own sitemap and robots.txt. This is exactly the kind of split-ownership, shared-infrastructure complexity I flagged in enterprise technical SEO: “Sometimes different people are responsible for different sections of the website or even different pages, which can make internal linking time-consuming.” » (Traduction) (Résumé en français de la section quarante-trois, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

Headless rendu stratégie (XM Cloud)

«One layer-ownership point worth being explicit about, since it trips people up: XM Cloud environments have both an editing host and a rendering host, and they are not the same thing. Sitecore’s own docs draw the line clearly — the editing host exists only to power the WYSIWYG editing experience inside Page Builder/Design Studio, “is not set up or scaled for serving live traffic,” and sees internal (author-only) traffic. The rendering host is the public-facing Next.js app — hosted on Vercel, Netlify, or Azure, consuming content from Experience Edge, and scaled to serve real site visitors. Crawlers only ever hit the rendering host; the editing host’s rendering behavior (or an editing-host URL leaking into a sitemap or getting linked to) is not representative of what Googlebot sees and isn’t something search engines should be able to reach at all. » (Traduction) (Résumé en français de la section quarante-cinq, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

On XM Cloud le rendu mode vous choisir dans Suivant.js est le SEO décision. Akshay Sura (Konabos) lays out le four options cleanly:

StratégieSEO impact
SSG (static)Meilleur — “SSG pre-renders HTML à construire time… Moteurs de recherche peut easily explorer le pre-rendu HTML.”
ISR (incremental static regen)Bon — static performances avec background freshness; recommended pour contenu à scale
SSR (serveur-side rendre)Bon — “Fully rendu HTML est ready pour moteurs de recherche à indexer.”
CSR (client-side rendre)Worst — “Moteurs de recherche peut struggle avec indexation JavaScript-rendu contenu.”

Le recommendation: SSG or ISR pour le SEO-critical contenu; reserve CSR pour interactive UI seulement. Metadata est définir via generateMetadata (App Router). David Austin (Fishtank) notes a performances nicety: “Tout récupérer calls dans generateMetadata sont memoized, meaning identical URLs sont seulement récupéré une fois à travers le application, preventing redundant requêtes.” Et as Sebastián Aliaga puts il, “Le dynamic approche est le meilleur méthode pour Sitecore Headless as vous’ll être able à prendre qu’est-ce que partie de lune page’s layout données et incorporate il.”

Personalization — don’t cloak

Sitecore’s personalization est a réel SEO consideration. On XP, personalization renders serveur-side, donc Googlebot voit le par défaut (un-personalized) experience — assurez-vous que par défaut est complet et SEO-optimized, pas thin. On XM Cloud, client-side personalization (JSS) peut hide contenu depuis robots d’exploration que ne pas exécuter le JavaScript; pre-rendre le par défaut avec SSR, or personalize à le edge.

Le difficile règle à travers les deux: jamais servir différent contenu à robots d’exploration que à utilisateurs — c’est cloaking, et c’est a guidelines violation. Jamais personalize le principal H1, FAQ contenu, or données structurées avec client-side règles. Personalization devrait ajouter à, jamais remplacer, le canonical contenu.

Données structurées

Utiliser JSON-LD dans <script type="application/ld+json">. On XP, rendre il depuis template champs dans votre Razor view or via pipeline; on XM Cloud, model schema champs dans templates, retrieve over GraphQL, et rendre dans le Suivant.js component. Prioritize FAQPage, HowTo, Product, Article, et BreadcrumbList. Vous pouvez deploy via a balise manager — Martha van Berkel (Schema App) notes teams “typically utiliser JavaScript à deploy Balisage de données structurées à Sitecore… les deux efficient et scalable” — mais être aware client-side injection signifie AI robots d’exploration peut miss il, donc préférer serveur-rendu JSON-LD pour maximum coverage. Peter Lambrou (Codehouse) frames le payoff simplement: “Ajouter balisage de données structurées à lune page HTML à faire votre résultats de recherche apparaître plus attractive.”

Enterprise governance — où the réel fonctionner is

Unique paramètres aside, le SEO résultat on a big Sitecore install est decided par governance. j’ai said avant que enterprise sites sont où SEO technique shines precisely parce que “enterprise sites peut ont complexe infrastructures et a lot de legacy systèmes dans placer” — et “Je doubt il y a a major site web que est technically perfect.” Le recurring Sitecore-spécifique governance éléments:

  • Template sprawl. Plusieurs templates pour le même objectif, chaque avec différent (or manquant) SEO champs. Audit les; enforce a base SEO template que chaque page template inherits.
  • Metadata validation. “Reset Blank” plus champ-level validation donc authors ne peut pas ship vide or over-length titles et descriptions.
  • Alias governance. A policy que aliases sont seulement créé avec a canonical override or as 301s.
  • Environment contrôler. CM/QA/staging disallowed; production explicitly allowed et verified.
  • Budget d’exploration à scale. Faceted navigation, langue versions, et parameter URLs peut blow up l’URL space; curate sitemaps et govern robots/noindex tightly. (Voir budget d’exploration.)

Ajouter une note d’expert

Épingler une citation d’expert

Nouvelle personne ? Créez son profil non revendiqué à /admin/experts/ → Épingler une citation d’expert d’abord.