GeotrekCE / Geotrek-rando-v3

Geotrek public data website (version 3)
https://geotrek.fr/produit.html#rando
MIT License
17 stars 16 forks source link

Rediriger URL de la langue par défaut #1165

Open camillemonchicourt opened 4 months ago

camillemonchicourt commented 4 months ago

Pour le multilingue et les URL des pages, il a été retenu cette solution :

Ce système mixte pose peut-être quelques soucis aux moteurs de recherche. Dans tous les cas, actuellement les pages dans la langue par défaut fonctionnent aussi avec la langue présente dans l'URL, et parfois Google indexe celles-ci. Je ne sais pas où il les trouve car le sitemap et les baliques "canonical" indiquent bien la version sans la langue dans l'URL.

Mais Google a par exemple indexé l'URL https://destination.ecrins-parcnational.fr/fr/trek/903299-La-Grande-Cabane plutôt que https://destination.ecrins-parcnational.fr/trek/903299-La-Grande-Cabane

Pour éviter cela, il faudrait faire en sorte qu'une redirection automatique soit mise en place des URL des pages dans la langue définie par défaut avec la langue dans l'URL vers les URL de ces pages sans la langue dans l'URL.

Dans notre cas de https://destination.ecrins-parcnational.fr/fr/trek/903299-La-Grande-Cabane vers https://destination.ecrins-parcnational.fr/trek/903299-La-Grande-Cabane. Ainsi on serait certain que Google indexe l'URL https://destination.ecrins-parcnational.fr/trek/903299-La-Grande-Cabane et pas https://destination.ecrins-parcnational.fr/fr/trek/903299-La-Grande-Cabane

Et on n'aurait pas de risque de duplicate content et de divergence dans la structure des URL indexées.

dtrucs commented 3 months ago

Après investigations, il s'agit d'un problème de la gestion de l'internationalisation inhérent au framework. De multiple issues ont été ouverts sur le dépot de nextJS depuis sa version 10 et aujourd'hui à la version 14.2, ce n'est toujours pas réglé.

Les propositions de contournements sont difficiles à mettre en place et jamais vraiment satisfaisantes. Pour le moment, je préconise de gérer la redirection depuis le serveur

Exemple de configuration NGINX:

location /fr {
    return 301 /;
}

location ~ '^/fr/(?<rest_uri>.*)' {
    return 301 /$rest_uri$is_args$args;
}

(Il convient de remplacer les 2 occurences "fr" par la la valeur que vous avez défini pour la clé defaultLanguage de header.json)

camillemonchicourt commented 3 months ago

OK, ça fonctionne bien : https://destination.ecrins-parcnational.fr/fr/trek/962618-A-la-decouverte-des-hameaux-de-Vallouise-et-Pelvoux Et ça devrait résoudre dans les prochains jours les erreurs d'indexation sur les URL avec /fr/. A suivre, merci.