web-dev-qa-db-fra.com

Nettoyer les URL sur un site multilingue d'une seule page

J'aimerais supprimer les éléments multilingues dans les URL, c'est-à-dire obtenir site.com/page au lieu de en.site.com/page, site.com/en/page et site.com/page?lang=en.

La motivation est la suivante: les humains n'ont pas besoin de ces choses. Vous pouvez obtenir le lien page?lang=de en cherchant une phrase allemande ou en naviguant dans une communauté germanophone. Qu'est-ce que Accept Language a-t-il/elle? Ainsi, SE est le seul parti qui a besoin d'URL en désordre à cause d'un support médiocre (inexistant) Accept Language. Les moteurs de recherche essaient de comprendre toutes les langues, tandis que les humains savent de quelle langue ils ont besoin. J'aimerais conserver uniquement les URL désordonnées réservées aux robots d'exploration et en montrer les plus propres aux humains, dans la mesure du possible.

Des questions:

  1. Quel est le problème avec ma motivation?
  2. N’est-il pas possible de substituer des URL en désordre par des URL propres dans les résultats de recherche?
  3. Les SE prennent-ils en compte window.location? Est-il dangereux de nettoyer la barre d’URL via JS?
  4. Contrairement à Google, qui permet de lier des localisations entre elles via un sitemap, Yandex souhaite que <link rel="alternate" hreflang="... soit un code interne. Dois-je synchroniser ces balises avec window.location?
3
user76879

Il n'y a rien de mal à vouloir nettoyer l'URL, mais je vais préciser certaines choses ici ...

  • Les utilisateurs acceptent généralement d’avoir un code de langue dans l’URL (soit en tant que sous-domaine ou en tant qu’annuaire du domaine principal).
  • Vous avez raison de dire qu'il est préférable de ne pas utiliser le code de langue comme paramètre d'URL, car il peut facilement être modifié ou oublié.
  • De nombreux utilisateurs n'ont pas correctement configuré les paramètres Accept Language dans leur navigateur, car ils ne le contrôlent pas (ordinateur public ou d'entreprise) ou ne savent pas comment le faire.

La pratique courante, qui est également l'une des options prises en charge par Google, consiste à utiliser des sous-domaines pour vos codes de langue ou des domaines de premier niveau de code de pays (plus coûteux, car vous devez acheter un nom de domaine pour chaque traduction de votre site Web. ). Vous devez également inclure la méta rel="alternate" href-lang="..." dans vos fichiers pour créer un lien vers la version traduite. Je vérifie également les en-têtes pour voir si l'en-tête Accept Language est présent et correspond à la langue par défaut du site. Dans ce cas, je propose à l'utilisateur une option dans sa langue pour accéder au site traduit.

2
Chris Rutherfurd