Stratégie multilingue : anti DC, accept-language et hreflang

Nouveau WRInaute
Bonjour,

Je m'arrache les cheveux depuis des heures de recherches ici même et ailleurs pour savoir comment structurer de la façon la plus optimale mon site multilingue, ici français, anglais ou néerlandais.

Il s'agit de la refonte d'un site français (non-multilingue) possédant un nom de domaine (ayant quelques années) en .com (accompagné du .fr, .net, .info, et .org qui redirigent depuis tout le temps en 301 sur le .com)

J'ai cru comprendre déjà que dans mon cas, dans la nouvelle version du site (maintenant multilingue), il vaut mieux réécrire les url contenant mes paramètres de session, je transforme donc :

http://www.monsite.com/index.php?lang=fr
par
http://www.monsite.com/fr/index.php

de cette manière :

Code:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(fr|en|nl)/(.*)$ $2?lang=$1 [L,QSA]

Jusqu'ici rien à signaler mes URL semblent pleinement fonctionnelles avec la nouvelle structure.

Ce qui me pose problème c'est que pour le moment, si quelqu'un arrive sur : http://www.monsite.com, donc sans précisions linguistiques, rien ne redirige l'internaute (ou le robot) vers une langue en particulier.

On m'a conseillé d'utiliser ce code que je ne comprends pas réellement :

Code:
RewriteEngine on
#
# Utiliser accept-language pour rediriger automatiquement vers la langue française si aucune correspondance
RewriteCond %{HTTP:Accept-Language} ^(fr¦en¦nl)[-,;]? [NC,OR]
RewriteCond fr ^(fr)$
RewriteRule ^$ http://www.monsite.com/%1/ [R=301,L]
#

Le but final est qu'il ne puisse pas exister d'autres structures d'URL (site statique d'une dizaine de fichiers max) que :

http://www.monsite.com/fr/nomfichier.php
http://www.monsite.com/en/nomfichier.php
http://www.monsite.com/nl/nomfichier.php

La contrainte qui me rend dingue, c'est que je ne sais pas comment les bots Google (et autres) interprètent cela pour un crawl efficace et cohérent, car j'ai cru comprendre que les sessions peuvent poser problème à ce niveau.

Enfin, dernier petit détail, Google conseille d'utiliser rel="alternate" hreflang="x", comment feriez-vous ? J'ai pensé par exemple à une condition via php : Si langue en session actuelle = "fr", alors afficher ceci dans le header (et inversement si langue actuelle = "en") :

Code:
<link rel="alternate" hreflang="en" href="http://www.monsite.com/en/" />

Merci infiniment de votre aide ou conseils, je vous assure que j'ai épluché tellement de sujets ici même et ailleurs, sans parler des billets officiels du blog de google traitant du sujet, qu'au final je suis encore plus perdu...
 
Nouveau WRInaute
Désolé je ne peux plus éditer le message, mais Olivier précise également ceci dans un autre post concernant les informations à indiquer via Google Webmaster Tools :

WebRankInfo a dit:
en effet, la notion de "site" dans GWT n'est pas très habituelle : ça peut être un domaine entier, un sous-domaine ou même un répertoire

pour répondre à Fanfan92, je pense que c'est fichu pour les fichiers à la racine : il ne faut jamais mélanger plusieurs langues dans un même répertoire (racine ou pas)

Dans mon cas ici il ne s'agit pas de réels sous-dossiers "/fr/" ou "/en/"
Donc de dossiers virtuels générés via URL rewriting en fonction du paramètre "?lang=fr" ou "?lang=en" indiqué en URL.
Du coup suis-je également assujetti sur ce point ?

Il serait intéressant de faire un topic unique à épingler sur le sujet au vu des questions récurrentes sur le sujet :

Ressources officielles de Google sur le sujet :

http://googlewebmastercentral.blogspot.fr/2010/03/working-with-multi-r ... sites.html
http://googlewebmastercentral.blogspot.fr/2010/03/working-with-multili ... sites.html

Infos intéressantes et cas similaires sur WRi, mais qui ne m'éclaircissent pas vraiment :

https://www.webrankinfo.com/forum/t/referencement-sites-multilingues.100751/
https://www.webrankinfo.com/forum/t/referencement-multilangue-site-dynamique.6695/
https://www.webrankinfo.com/forum/t/meilleure-structure-dun-site-multilingue.130394/
 
Nouveau WRInaute
Arf.. ça n'a pas l'air d'inspirer grand monde :(

Peut-être au moins pour me filer un tuyau concernant le .htaccess (que je comprends mieux maintenant)

Code:
# Optimisation SEO pour module multilingue
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(fr|en|nl)/(.*)$ $2?lang=$1 [L,QSA]
Cette première règle fait bien son job, elle me retranscrit bien :
http://www.monsite.com/index.php?lang=fr
par
http://www.monsite.com/fr/index.php


Code:
# Si langage FR detecte, alors forcer sur /fr/
RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteRule ^$ /fr/index.php [L,R=301]
# Pour tout autre langage detecte, alors forcer sur /en/
RewriteRule ^$ /en/index.php [L,R=301]]
Pour éviter que l'on puisse naviguer sur le site avec une URL classique du type : http://www.example.com, je force les visiteurs à accéder à une de deux URL http://www.example.com/fr/ ou alors http://www.example.com/en/

Les règles fonctionnent bien individuellement, mais j'ai un conflit avec les 2 en même temps.

Merci d'avance pour n'importe pour un éventuel tuyau, aussi infime soit-il..
 
Discussions similaires
Haut