Est-ce possible d'ajouter /fr, /en ou /de derrière le .com ?

WRInaute occasionnel
Bonsoir,
Pour pouvoir referencer un site multilingue, j'essaie de parametrer .htacess pour pouvoir inserer la langue dans l url sous la forme : monsite.com/fr/index.php....ou monsite.com/en/index.php.. alors qu'actuellement j'ai monsite.com/index.php... quelle que soit la langue du visiteur que je detecte par son navigateur ou les petits drapeaux et que monsite.com/fr ou monsite.com/en n'existent pas.
Pour l'instant dans htaccess, j'appelle un script php qui met la langue dans la variable MA_LANG , mais ensuite. je n'arrive pas a ecrire correctement la ligne RewriteRules pour composer le nouveau nom de la page. J'ai essaye des dizaines de fois et lu la doc, mais ca plante a chaque fois et je ne sais plus quoi ecrire dans htaccess.
Merci de vos suggestions
 
WRInaute discret
hello

pour effectuer un test de la langue du navigateur dans ton htaccess, utilises RewriteCond

exemple
RewriteCond %{HTTP_ACCEPT_LANGUAGE} fr
pour detecter un navigateur confguré exclusivement en français
 
WRInaute occasionnel
merci de la reponse, mais je prefererai la langue venant du code car elle peut etre differente de la langue du navigateur si selection par drapeaux
 
WRInaute passionné
Un truc du genre
Code:
RewriteRule ^([en|fr])/(.*) $2?MA_LANG=$1 [QSA]
ne fonctionne pas ??
 
WRInaute occasionnel
Non, ca ne fait rien, mais au moins ca ne plante pas. C'est deja ca. Je vais verifier si MA_LANG est bien charge.
edit : la variable MA_LANG ne contient rien.
 
WRInaute passionné
So sorry, il faut faire (je viens d'essayerchez moi : ça marche)
Code:
RewriteRule ^(en|fr)/(.*)$ $2?MA_LANG=$1 [QSA]

chaque page du type lg/mapage sera dirigée vers mapage?MA_LANG=lg
avec lg = fr ou en

nb : chez certain hebergeur il faut mettre / devant le $2

Tiens moi au courant.
 
WRInaute occasionnel
La variable MA_LANG est bien chargee avec en ou fr ou de.
En fait, je veux inserer cette variable entre le nom de domaine et le reste des pages pour creer des repertoires virtuels. Ainsi les moteurs de recherches indexeront lesite.com/fr/index.php et aussi lesite.com/en/index.php alors qu'en fait c'est toujours lesite.com/index.php. Mais je n'y arrive toujours pas.
 
WRInaute passionné
heu...
pour l'URL-Rewriting, tu dois transformer tous les liens directement dans tes fichiers :
tous tes liens doivent être de la forme monsite.com/fr/index.php.
Les moteurs de recherche et les internautes, en affichant cette page appelleront en fait (sans qu'ils le sache) monsite.com/index.php?MA_LANG=fr

En plus de la detection de la langue du navigateur, et pour présenter plusieurs langue differente aux moteurs, il faut faire apparaitre les liens monsite.com/fr/index.php et monsite.com/en/index.php qu'ils pourront suivre.

C'est clair ??
 
WRInaute occasionnel
oui, c est clair. Donc, il semble que ce je voulais faire n est pas possible . dommage car la reecriture des liens aurait ete entierement automatique et virtuelle. Je vais quand meme encore faire quelques tests.
Merci,
Edit :j'y suis presque parce qu'obligé de mettre le chemin en dur avec :
RewriteRule ^index.php$ http://***.monsite.com/%{MA_LANG}/index.php
[QSA]

J'obtiens comme url : http://***.monsite.com//index.php
Entre les 2 / , il n'y a pas MA_LANG
Je charge MA_LANG avec putenv (
Ou est l'erreur ?
L'erreur est que je ne peux pas definir de nouvelle variable sur un serveur mutualise ?
 
Discussions similaires
Haut