Sous domaines à partir d'une variable (site multilingue)

Nouveau WRInaute
Bonjour à tous.
Je suis entrain de réaliser un site qui sera multilingue. La langue des pages sera donc choisi en fonction d'une variable;

Ainsi, je voudrais que la page:
www.fr.monsite.com/repertoire1/page.php
Affiche la page:
www.monsite.com/repertoire1/page.php?lang=fr

ou même:
www.fr.monsite.com/repertoire1/page.php?var2=12
Affiche:
www.monsite.com/repertoire1/page.php?lang=fr&&var2=12

Pour le deuxieme exemple, j'ai ajouté une variable pour vous montrer qu'il peut y avoir plusieurs variables dans mes URL mais je n'y connais pas grand chose en .htaccess, donc je ne sais pas si celà influe.
J'ai recherché sur le forum, j'ai bien trouvé ça; https://www.webrankinfo.com/forum/t/sous-domaine-et-rewriting.40572/ mais même après de multiples tentatives, je n'arrive pas à obtenir ce que je recherche.

Je vous remercie beaucoup pour votre aide.
 
WRInaute impliqué
je pense, qu'a défaut de faire ça avec un htaccess, tu pourrais peut etre essayer de le faire avec php...

Tu créer deux virtualhost pour faire deux sous domaine www.fr et www.en par exemple, tu peux meme faire 4 sous domaine: www.fr www.en ; en. et fr. en faisant des redirections adéquats.

Bon une fois que fr.tonsite.com et en.tonsite.com pointent repectivement vers www.fr.tonsite.com et www.en.tonsite.com (tout ceci releves de choix a faire, j'en parle quand meme mais ce n'est pas le sujet), il te fait récupérer en php le début de l'url, et regarder si l'url courrante débute par www.fr ou www.en .

Dans ton php, au lieu de dire si la variable get lang=fr on affiche en francais, si lang=en on affiche en anglais

tu n'a qu'a dire:

si l'url débute par www.en on affiche en anglais, si elle débute par www.en on affiche en anglais...

C'est tout aussi simple et tout aussi sure.
 
Nouveau WRInaute
Aaaah!! MERCI beaucoup Zim', c'est vraiment tout bête et pourtant je n'y avais pas pensé :oops:. Je vais donc essayer ta technique mais ça devrait marcher :D. Je vous tiens au courent...
 
Nouveau WRInaute
Salut!

Sur les conseils de Zim' je me suis donc passé de l'URL rewritting pour mon site multilingue.
Pour les personnes qui pourraient être intéréssés, voilà la manière dont j'ai procédé:

dans le .htaccess tout d'abord ( :wink: et oui y en a quand même un peu)

RewriteCond %{HTTP_HOST} ^www.(en|es|fr)\.monsite\.com$

RewriteCond %{HTTP_HOST} ^en.monsite.com
RewriteRule (.*) http://www.en.monsite.com/$1 [QSA,L,R=301]

RewriteCond %{HTTP_HOST} ^es.monsite.com
RewriteRule (.*) http://www.es.monsite.com/$1 [QSA,L,R=301]

RewriteCond %{HTTP_HOST} ^fr.monsite.com
RewriteRule (.*) http://www.fr.monsite.com/$1 [QSA,L,R=301]

Donc ci-dessus j'accepte les sous domaines "en", "es" et "fr" puis j'ajoute les "www" si ils n'y sont pas.

Ensuite tout se joue dans vos pages.

$host = $_SERVER['HTTP_HOST'];
if($host == "www.en.monsite.com")
{$trans = "en/index_en_inc.php";}
elseif($host == "www.es.monsite.com")
{$trans = "es/index_es_inc.php";}
elseif($host == "www.fr.monsite.com")
{$trans = "fr/index_fr_inc.php";}
else{$trans = "en/index_en_inc.php";}

//Ouverture du fichier de traduction
require("/home/dfsferg/trans/$trans");
//fin de linclusion

- j'utilise la variable d'envireonement pour definir $host
- ...je met les conditions (..bon là vous avez compris...)
- et enfiin j'inclus le bon fichier de traduction en fonction de la langue détectée.


Bon voilà, j'espère avoir été clair, je pense que c'est une des solutions les plus simple et pratique pour élaborer un site multilingue, il y a certainement mieux et plus efficace mais comme je suis pas un pro je me contenterais de ça. :wink:

:arrow: Je vous confirme quand même que ça marche nickel :wink:
 
WRInaute impliqué
Oui tu peux tres bien gérer tes sous domaines dynamiquement, mais cela signifie que tu as un vhost avec un sous domaine wildcard (*)

exemple:

*.tondomaine.com pointant à la racine de ton site :)

D'une manière plus simple et plus sure, tu aurais tout simplement pu créer des vhost spécifique dans ta config apache pour chacun des sous domaines. Chaques sous domaine pointant à la racine de ton site.

Ainsi, tu n'aurai pas eu a gérer tout ce barda dans ton htaccess.

Mais dans le principe, cela reviens au meme, bien que dans la réalisation, cela aurait pu etre plus simple :)

Pense donc, que , si tu change de serveur, il te faudra remettre un vhost avec un wildcard pour sous domaine, et en mutualisé il n'y a, a ma connaissance que celeonet qui gere ceci
 
Nouveau WRInaute
Oui mais le truc c'est que moi les vhost et le sous domaine wildcard, je ne connais pas dutout :oops: je suis sur un mutualisé qui je pense ne permet pas de gérer celà: je ne peu pas modifier la config d'apache. En tout cas maintenant je sais que l'on peut arranger tout ça à partir de la configuration d'apache.
Merci pour ton aide. :D
 
WRInaute impliqué
donc tu as doit au vhost avec un wildcard pour sous domaine...
quel est ton hébergeur s'il te plait?
 
Nouveau WRInaute
Je suis chez Web1 (qui au passage est un très bon hebergeur au regard de son rapport qualité prix :wink: ), le pack d'entrée de gamme (2 Go).
 
Discussions similaires
Haut