Que dit Google sur le SEO ? /
Quiz SEO Express

Testez vos connaissances SEO en 5 questions

Moins d'une minute. Decouvrez ce que vous savez vraiment sur le referencement Google.

🕒 ~1 min 🎯 5 questions

Declaration officielle

Pour indexer correctement les pages Angular, assurez-vous que les URL avec JavaScript ne comportent pas de dièse (#) car Google les ignore pour l'indexation.
42:06
🎥 Vidéo source

Extrait d'une vidéo Google Search Central

⏱ 56:37 💬 EN 📅 15/05/2018 ✂ 14 déclarations
Voir sur YouTube (42:06) →
Autres déclarations de cette vidéo 13
  1. 2:06 Google fusionne-t-il vraiment les pages similaires en une seule version indexée ?
  2. 4:34 Le pré-rendu basé sur l'user-agent est-il devenu la seule méthode recommandée par Google ?
  3. 5:49 Faut-il vraiment adapter la longueur de ses meta descriptions aux snippets Google ?
  4. 7:53 Faut-il bloquer la redirection automatique vers l'app mobile pour préserver son SEO ?
  5. 7:53 Les redirections furtives vers les applications mobiles sont-elles un frein au référencement ?
  6. 8:32 Google propose-t-il vraiment une révision manuelle SEO de votre site ?
  7. 9:40 Les canonicals JavaScript sont-elles vraiment ignorées par Google ?
  8. 11:17 Les PWA sont-elles vraiment indispensables pour le référencement naturel ?
  9. 16:56 Faut-il corriger les URLs marquées 'submitted URL not selected as canonical' ?
  10. 17:36 Faut-il supprimer un sitemap qui contient trop d'erreurs ?
  11. 19:40 Comment Google distingue-t-il réellement le contenu dupliqué des adresses identiques ?
  12. 25:43 Faut-il vraiment rediriger toutes les pages HTTP vers HTTPS pour éviter les problèmes d'indexation ?
  13. 37:33 Faut-il craindre de trop lier vers Wikipédia ou des sites d'autorité ?
📅
Declaration officielle du (il y a 8 ans)
TL;DR

Google ignore les fragments d'URL contenant un dièse (#) pour l'indexation, ce qui pose un problème majeur pour les applications Angular utilisant le routing par défaut. Concrètement, si votre SPA génère des URL du type exemple.com/#/produits, Googlebot n'indexera que la page racine. La solution : basculer sur le mode PathLocationStrategy pour obtenir des URL propres indexables, ou implémenter un système de pré-rendu dynamique.

Ce qu'il faut comprendre

Quelle est l'origine technique de ce problème avec le dièse ?

Le fragment d'URL (tout ce qui suit le #) était historiquement conçu pour la navigation côté client uniquement. Les navigateurs ne l'envoient jamais au serveur lors d'une requête HTTP. Lorsque vous accédez à exemple.com/#/produits, le serveur reçoit uniquement exemple.com.

Pour Googlebot, cette logique s'applique aussi : il considère que tout après le # ne fait pas partie de l'URL canonique. Deux URL comme exemple.com/#/produits et exemple.com/#/contact sont traitées comme la même ressource : exemple.com. C'est un héritage du web statique où le fragment servait uniquement aux ancres de navigation interne.

Pourquoi Angular utilisait-il ce système par défaut ?

Angular (et beaucoup de frameworks SPA avant lui) a longtemps utilisé le HashLocationStrategy comme mode de routing par défaut. L'avantage ? Aucune configuration serveur requise. Peu importe l'URL demandée, le serveur renvoie toujours index.html, et JavaScript gère ensuite le routing côté client.

Cette approche était pratique pour le développement et les environnements ne permettant pas de configurer facilement les redirections serveur. Mais elle créait un cauchemar SEO : toutes les pages de l'application partageaient la même URL aux yeux des moteurs de recherche.

Qu'est-ce que cela implique pour le crawl et l'indexation ?

Si votre site Angular conserve des URL avec dièse, Google n'indexera qu'une seule page : votre racine. Toutes vos sous-pages, fiches produits, articles de blog générés par le framework resteront invisibles dans les SERP. Le crawl s'arrête net à la racine puisque Googlebot ne considère pas les liens internes avec # comme des pages distinctes.

Même si Google exécute JavaScript, il applique cette règle en amont. Le rendu côté client ne change rien : le fragment est ignoré dès l'analyse de l'URL. C'est une décision architecturale du web, pas une limitation technique de Googlebot.

  • HashLocationStrategy produit des URL non-indexables (exemple.com/#/page)
  • PathLocationStrategy génère des URL propres (exemple.com/page) mais nécessite une configuration serveur
  • Le pré-rendu côté serveur (SSR) peut contourner le problème en générant du HTML statique pour chaque route
  • Google ne fait aucune exception : même avec un sitemap XML listant les URL avec #, elles ne seront pas indexées
  • Les autres moteurs appliquent la même règle : Bing, Yandex ignorent également les fragments d'URL

Avis d'un expert SEO

Cette déclaration est-elle cohérente avec les observations terrain ?

Oui, sans ambiguïté. Des centaines de migrations Angular l'ont confirmé : le passage de HashLocationStrategy à PathLocationStrategy débloque l'indexation quasi instantanément. Les tests sont reproductibles et les résultats unanimes. Ce n'est pas une zone grise du SEO.

Ce qui surprend encore certains clients, c'est la radicalité de l'impact. On ne parle pas d'un léger handicap de ranking, mais d'une invisibilité totale. Google n'indexe littéralement qu'une page. Les logs serveur le confirment : Googlebot ne fait qu'une seule requête vers la racine, peu importe le nombre de liens internes.

Quelles nuances faut-il apporter à cette règle ?

La seule exception historique concernait les schémas d'URL AJAX crawlables avec #! (hashbang), que Google supportait entre 2009 et 2015. Ce système est obsolète depuis des années et ne doit plus être utilisé. Si vous tombez sur du legacy code avec des #!, migrez immédiatement.

Attention aussi aux hybrides mal configurés. Certains sites utilisent PathLocationStrategy mais génèrent quand même des liens avec # dans le HTML rendu, souvent à cause de composants tiers ou de mauvaises pratiques de routage. Un audit des liens internes s'impose : si vous voyez des href="#/quelque-chose", c'est un bug qui handicape votre crawl.

Faut-il toujours privilégier le SSR pour Angular ?

Le SSR (Server-Side Rendering) avec Angular Universal n'est pas obligatoire si vous basculez sur PathLocationStrategy et configurez correctement votre serveur pour servir index.html sur toutes les routes. Googlebot exécute JavaScript de manière fiable aujourd'hui. Le SSR apporte surtout un gain de vitesse perçue et de compatibilité avec les bots moins évolués.

Cela dit, pour un site e-commerce ou éditorial avec des milliers de pages, le SSR améliore significativement le crawl budget et la réactivité de l'indexation. Google préfère recevoir du HTML déjà hydraté plutôt que d'attendre l'exécution JavaScript. Sur les gros volumes, cette différence se chiffre en semaines de délai d'indexation. [À vérifier] : Google n'a jamais publié de métriques officielles sur l'impact du SSR sur le crawl budget pour les SPA, mais les observations terrain plaident fortement en sa faveur.

Impact pratique et recommandations

Comment vérifier si votre site Angular utilise des URL avec dièse ?

Ouvrez votre navigateur et naviguez sur plusieurs pages de votre application. Regardez la barre d'adresse : si vous voyez des # suivis de chemins (/produits, /contact, etc.), vous êtes en HashLocationStrategy. Vérifiez aussi le code source de votre composant AppRoutingModule : la présence de {useHash: true} dans RouterModule.forRoot() confirme le problème.

Testez ensuite l'indexation réelle : faites un site:votredomaine.com dans Google. Si seule la homepage apparaît alors que vous avez des dizaines de pages, c'est un indicateur fort. Utilisez aussi Google Search Console pour analyser les pages découvertes versus indexées : un écart massif suggère un souci de routing.

Que faut-il modifier concrètement dans votre application Angular ?

Dans votre fichier de routing principal (app-routing.module.ts), assurez-vous que RouterModule.forRoot() n'inclut PAS l'option {useHash: true}. Par défaut, Angular utilise PathLocationStrategy depuis les versions récentes, mais vérifiez si un développeur n'a pas forcé le mode hash.

Côté serveur, configurez un fallback vers index.html pour toutes les routes non-fichiers. Sur Nginx : try_files $uri $uri/ /index.html; Sur Apache : FallbackResource /index.html dans .htaccess. Sans cette config, un refresh sur exemple.com/produits renverra une 404 car le serveur cherche un fichier produits.html inexistant.

Quelles erreurs éviter lors de la migration ?

Ne migrez pas sans mettre en place des redirections 301 si votre ancien site avec # était partiellement indexé ou linkait par d'autres sites. Même si Google ignorait les fragments, des utilisateurs ont peut-être bookmarké des URL avec #. Redirigez proprement exemple.com/#/produits vers exemple.com/produits côté client avec un script de détection.

Ne négligez pas le sitemap XML après migration. Générez-le avec vos nouvelles URL propres et soumettez-le dans Search Console pour accélérer la découverte. Surveillez les erreurs 404 dans les semaines suivantes : elles révèlent souvent des liens internes mal migrés ou des routes manquantes dans votre configuration serveur.

  • Vérifier l'absence de {useHash: true} dans RouterModule.forRoot()
  • Configurer le fallback serveur vers index.html sur toutes les routes
  • Tester le refresh navigateur sur plusieurs URL internes pour confirmer l'absence de 404
  • Mettre à jour le sitemap XML avec les nouvelles URL sans dièse
  • Implémenter des redirections 301 côté client pour les anciennes URL avec # si nécessaire
  • Monitorer Google Search Console pour détecter les erreurs d'indexation post-migration
La migration d'Angular vers des URL indexables représente un chantier technique qui touche à la fois le code applicatif et la configuration serveur. Pour les équipes sans expertise approfondie en SEO technique et en architecture SPA, ce type de projet peut générer des erreurs critiques (redirections manquantes, perte de crawl budget, régressions d'indexation). Faire appel à une agence SEO spécialisée dans les frameworks JavaScript permet de sécuriser la migration, d'anticiper les pièges liés au rendering côté client, et d'optimiser l'architecture pour maximiser la visibilité organique dès le déploiement.

❓ Questions frequentes

Est-ce que Google peut indexer des URL avec # si on utilise un sitemap XML ?
Non. Même si vous listez des URL avec dièse dans votre sitemap XML, Google les ignorera. Le fragment d'URL est exclu de l'indexation par principe architectural, indépendamment de la méthode de découverte.
Les autres frameworks SPA (React, Vue) ont-ils le même problème ?
Oui, si leur routing utilise des fragments d'URL avec #. React Router et Vue Router proposent par défaut des modes history qui génèrent des URL propres, mais certains projets legacy ou mal configurés utilisent encore le mode hash.
Faut-il nécessairement passer par du Server-Side Rendering pour indexer un SPA ?
Non. Il suffit de basculer sur des URL sans # et de configurer le serveur pour servir index.html sur toutes les routes. Googlebot exécute JavaScript et indexera le contenu rendu côté client. Le SSR améliore cependant la vitesse d'indexation et les performances.
Que se passe-t-il si on mélange URL avec et sans dièse sur le même site ?
Vous créez un chaos de canonicalisation. Google indexera uniquement les URL sans #, mais les liens internes avec # seront traités comme des ancres vers la racine. Cela fragmente votre PageRank et désorganise votre architecture.
Les URL avec # peuvent-elles nuire au ranking même si on ne les utilise plus ?
Si elles génèrent des 404 ou des redirections en chaîne mal gérées, oui. Si vous avez migré proprement avec des 301 côté client et nettoyé les liens internes, l'impact résiduel sera négligeable après quelques semaines de recrawl.
🏷 Sujets associes
Anciennete & Historique Crawl & Indexation JavaScript & Technique Nom de domaine

🎥 De la même vidéo 13

Autres enseignements SEO extraits de cette même vidéo Google Search Central · durée 56 min · publiée le 15/05/2018

🎥 Voir la vidéo complète sur YouTube →

Declarations similaires

💬 Commentaires (0)

Soyez le premier à commenter.

2000 caractères restants
🔔

Recevez une analyse complète en temps réel des dernières déclarations de Google

Soyez alerté à chaque nouvelle déclaration officielle Google SEO — avec l'analyse complète incluse.

Aucun spam. Désinscription en 1 clic.