fr.mydomain.com vs mydomain.fr visant plutot la langue que le pays

WRInaute discret
Bonjour,

J'aurais besoin de conseil sur le lancement d'un site ecommerce multilingues ... Visant les pays/langues suivantes EN, FR, ES, IT, PL, NL.

Je possède les extensions DNS (.COM, FR, ES, IT, PL, NL) pour ce projet.

Chez ovh j'ai la possibilité de faire du multi-domaines et sous-domaines ... avec choix de ip du server par pays. (EN, FR, ES, IT, PL, NL)

Ma question concerne plutôt les extensions .COM et .FR

Vaut il mieux que j'attribue le .com pour l'anglais et que j'utilise des sous-domaines pour les autres pays/langues EX:

- mydomain.com (EN principal)
- fr.mydomain.com
- etc ...

OU

- mydomain.com (EN principal)
- mydomain.fr
- etc ...

Je n'ai pas de pays/langue principal, mon produit est destiner à tous ...

Sachant que j'aimerais être visible un minimum pour les canadiens, belges, etc ... francophone ...

Merci pour vos réponses ...
 
WRInaute accro
Il convient probablement de ne pas mélanger pays et langues. Tes listes semblent être des listes de langues, plutôt que de pays (tu parles ensuite de la Belgique, du Canada...).

Pour de nombreux sites, une structure en sous-domaine ou en sous-répertoire serait alors plus adaptée (la version française n'est pas pour la France, ce qu'un .fr impliquerait, mais pour les francophones). Mais comme tu fais de l'e-commerce, il faut ajouter la problématique des prix (devises éventuellement différentes, taxes différentes, frais de port différents, mentions légales/conditions générales éventuellement différentes, FAQ éventuellement différentes sur les problèmes de taxes à l'importation, etc.). Moi j'aurais tendance à conseiller soit un sous-répertoire ou sous-domaine par pays+langue, soit un domaine par pays + sous-domaine ou sous-répertoire par langue pour les pays multi-lingues (Belgique, Canada, Suisse, éventuellement US). L'avantage d'un domaine par pays, c'est que tu donnes plus "confiance" aux utilisateurs du pays en question. Mais tous les domaines ne sont pas forcément faciles à obtenir (un .ca par exemple ça devient difficile si tu n'es pas au Canada).

Il se posera alors une problématique de duplicate content. Google dit qu'ils sont capables de gérer ce cas de figure, mais tu vas avoir beaucoup de monde qui va te dire (à tort ou à raison) le contraire.

Jacques.
 
Nouveau WRInaute
kitten13 a dit:
Sachant que j'aimerais être visible un minimum pour les canadiens, belges, etc ... francophone ...

Bonjour,

Pour la Belgique par exemple c'est un peu compliqué car il y a 3 langues, le français, le néerlandais et l'allemand :?
 
WRInaute discret
Merci pour vos réponses, j'ai donc opter pour un domaine principal + sous-domaines EX:

Code:
http://www.domain.com 
http://fr.domain.com
http://it.domain.com
http://es.domain.com

Mon probleme est de gérer la traduction via un fichier lang j'ai donc penser à ceci:

Code:
RewriteCond %{HTTP_HOST} !^www.domain.com$
RewriteRule ^(.*)   http://www.domain.com/$1?lang=en  [L,QSA,R=permanent] 

RewriteCond %{HTTP_HOST} !^fr.domain.com$
RewriteRule ^(.*)   http://fr.domain.com/$1?lang=fr  [L,QSA,R=permanent] 

RewriteCond %{HTTP_HOST} !^it.domain.com$
RewriteRule ^(.*)   http://it.domain.com/$1?lang=it  [L,QSA,R=permanent] 

RewriteCond %{HTTP_HOST} !^es.domain.com$
RewriteRule ^(.*)   http://es.domain.com/$1?lang=es  [L,QSA,R=permanent]

Ou ceci:

Code:
RewriteCond %{HTTP_HOST} =domain.com 
RewriteRule .* http://www.domain.com/$0?lang=en [L,QSA,R=permanent] 
 
RewriteCond %{HTTP_HOST} ^www\.([^.]+)\.domain\.com$ 
RewriteRule .* http://%1.domain.com/$0?lang=%1 [L,QSA,R=permanent]

Obliger les www pour le domaine principal mais interdire pour les sous-domaines + gestion de la traduction via la variable lang ...

Je suis en mutua donc je peut pas jouer avec les virtualhosts etc ...
 
WRInaute accro
Euh...

1. tu as fait l'impasse sur ce qu'on t'a dit précédemment sur la distinction langue/pays. Un pays n'a pas forcément qu'une langue, et une langue ne concerne pas forcément qu'un seul pays.

2. Je ne comprends pas bien l'intérêt de tes rewriterules, qui à mon avis ne font pas du tout, mais alors du tout, ce que tu penses

3. Faire un redirect (externe) vers une URL avec un paramètre lang ce n'est pas une bonne idée. Au pire, ça devrait rester purement "interne" (invisible de l'extérieur)

4. Il est probablement nettement plus simple de juste récupérer $_SERVER['HTTP_HOST'] et d'en extraire la langue avec une regexp au début de chaque script php (probablement via un include). Ne pas oublier une valeur par défaut bien sûr.

Jacques.
 
WRInaute discret
1. tu as fait l'impasse sur ce qu'on t'a dit précédemment sur la distinction langue/pays. Un pays n'a pas forcément qu'une langue, et une langue ne concerne pas forcément qu'un seul pays.

Oui est c'est bien pour cela que je pause la question ici, a savoir comment gérer les cas des visiteurs francophones situer dans divers pays ...

Je ne comprends pas bien l'intérêt de tes rewriterules, qui à mon avis ne font pas du tout, mais alors du tout, ce que tu penses

J'ai revu le code est je procède comme ceci:
Code:
RewriteCond %{HTTP_HOST} =domain.com 
RewriteRule .* http://www.domain.com/$0 [L,QSA,R=permanent] 
 
RewriteCond %{HTTP_HOST} ^www\.([^.]+)\.domain\.com$ 
RewriteRule .* http://%1.domain.com/$0 [L,QSA,R=permanent]

Puis ensuite j'extraie le sous-domaines en php pour attribuer un fichier lang ... EX:
Code:
$lang_uri = substr($_SERVER['HTTP_HOST'], 0, 2); 
$lang = $lang.".inc.php";

L'avantage des sous-domaines : c'est plus simple à gérer dans un seul script que de multiple répertoire, etc ... Et dans certain cas plusieurs résultats ressortent dans les serps ...
 
WRInaute accro
kitten13 a dit:
Oui est c'est bien pour cela que je pause la question ici, a savoir comment gérer les cas des visiteurs francophones situer dans divers pays ...

On t'a déjà répondu plus haut. Pour un site e-commerce (avec donc au minimum des devises différentes dans de nombreux cas), la meilleure solution c'est un domaine, sous-domaine, ou répertoire (au choix) par combinaison de pays et de langue.

Ma version préférée est:
-www.example.fr (France, français)
-fr.example.be (Belgique, français)
-nl.example.be (Belgique, néerlandais)
-fr.example.ca (Canada, Français)
-en.example.ca (Canada, Anglais)
-www.example.de (Allemagne, allemand)
-www.example.at (Autriche, allemand)
etc.

Alternativement:
-www.example.fr (France, français)
-www.example.be/fr/ (Belgique, français)
-www.example.be/nl/ (Belgique, néerlandais)
-www.example.ca/fr/ (Canada, Français)
-www.example.ca/en/ (Canada, Anglais)
-www.example.de (Allemagne, allemand)
-www.example.at (Autriche, allemand)

Sinon, autres possibilités:
-www.example.com/fr/
-www.example.com/be/fr/
-www.example.com/be/nl/

Ou encore
-www.example.com/fr/
-www.example.com/be-fr/
-www.example.com/be-nl/

Ou même:
-www.example.com/fr-fr/
-www.example.com/be-fr/
-www.example.com/be-nl/

kitten13 a dit:
Code:
$lang_uri = substr($_SERVER['HTTP_HOST'], 0, 2); 
$lang = $lang.".inc.php";

- tu ne gères pas correctement le cas "www", ni les langues non supportées
- attention si tu "élargis" la façon dont tu récupères $lang, tu risques très fort la grosse injection. Pense donc à ajouter un peu plus de validation de ce que tu récupères.

Jacques.
 
WRInaute discret
Je réitère ma réponse jcaron:

On t'a déjà répondu plus haut. Pour un site e-commerce (avec donc au minimum des devises différentes dans de nombreux cas), la meilleure solution c'est un domaine, sous-domaine, ou répertoire (au choix) par combinaison de pays et de langue.

Voici sur quoi je me suis basé pour choisir les sous-domaines plutôt que les répertoires : http://www.referenceur.ma/fr/refere...aines-ou-dossiers-quel-est-le-meilleur-choix-

Ma version préférée est:
-www.example.fr (France, français)
-fr.example.be (Belgique, français)
-nl.example.be (Belgique, néerlandais)
-fr.example.ca (Canada, Français)
-en.example.ca (Canada, Anglais)
-www.example.de (Allemagne, allemand)
-www.example.at (Autriche, allemand)

Moi aussi, cependant toute les extensions ne sont pas libre voila pourquoi je me dirige vers quelque chose de plus généraliste ...

En regardant un peut certain site de traduction comme --lingo--.com-- je m'aperçois que avec 4 ou 5 sous domaines (EN,IT,ES,FR) le site ressort dans plusieurs résultats par langues et pays...

Après reste le cas ou multiplier autant de sous domaines va être un vrai casse tête pour moi niveau traduction vs contenu ... Difficile de faire un contenu différent pour une niche en français ex: FR, BE, CA, etc ...

tu ne gères pas correctement le cas "www", ni les langues non supportées
- attention si tu "élargis" la façon dont tu récupères $lang, tu risques très fort la grosse injection. Pense donc à ajouter un peu plus de validation de ce que tu récupères.

C'était juste un exemple rapide de l'idée que j'avais en tête, pour le cas du www on peut faire une comparaison avec un swicht et case défaut ou simplement un if, un autre exemple bête:
Code:
$lang_uri = substr($_SERVER['HTTP_HOST'], 0, 2); 
if($lang_uri == 'ww') $lang_file =  "en.inc.php";
else $lang_file =  $lang_uri.".inc.php";
require_once('lang/'.$lang_file);

En sachant que pour les sous-domaines le www est interdit (Lisibilité) mais pas pour le domaine principal.

ni les langues non supportées

Un peu comme le site mentionner plus haut je vais faire un sélecteur de langue sous forme de drapeau ...

Pour le cas d'école des injections ect ... effectivement, c'est la première chose que je gère quand je code ...
 
Haut