XasFullWeb
| Membre
Inscrit le : 05/02/2009
|
# Le 06/07/2009 à 10:29
Bonjour à tous,
Je suis actuellement en train de préparer la MAJ d'un site qui passera en version multilingue et j'ai un petit problème.
Pour définir la langue j'utilise des liens du type :
www.site.com
en.site.com
es.site.com
de.site.com
etc...
Toutes les langages utilisent les mêmes fichiers et chargent un dossier langue en fonction.
Architecture du type :
www/lang/en/
dans www/ j'ai un htaccess qui réécrit les écritures, je voudrais personnalisé les url en fonction de la langue choisie, coté PHP pas de problème par contre niveau htaccess, je ne vois pas comment déterminer mes liens, par ex :
www.site.com/motclé1-en-français/ pointe vers page1.php
en.site.com/keyword1-in-english/ pointe vers page1.php
www.site.com/motclé2-en-français/ pointe vers page2.php
en.site.com/keyword2-in-english/ pointe vers page2.php
Niveau regex, c'est la même architecture dans les 2 cas (dans cet exemple : RewriteRule ^([a-z]*)/$), donc impossible d'identifier les 2 pages différentes en l'état.
Je ne souhaites pas écrire en dur les mots clés pour chaque lien de chaque langue car il faut que simplement en uploadant le dossier langue ce la soit opérationnel et les fichiers htaccess ne permettent pas d'inclure un fichier.
Auriez-vous une idée pour résoudre ce problème ? Est-il possible d'utiliser un htaccess d'un dossier enfant dans le dossier principal ?
Merci d'avance,
Xavier. Full Web SARL : Création et Gestion de Sites Internet (design, script, mascotte, jeux flash, etc...) |
MathieuC
| Mathieu Modérateur
Inscrit le : 15/07/2005
|
# Le 06/07/2009 à 12:09
XasFullWeb a dit :
Est-il possible d'utiliser un htaccess d'un dossier enfant dans le dossier principal ?
Oui
|
XasFullWeb
| HERRIOT Membre
Inscrit le : 05/02/2009
|
# Le 06/07/2009 à 18:18
Salut,
Je parle bien d'utiliser un htaccess situé dans un dossier enfant (www/dossier_enfant/.htaccess) à partir du dossier principal (www/) et non l'inverse.
Si c'est bien ça, je veux bien que tu me dises comment il faut faire ;-)
A bientôt,
Xavier. Full Web SARL : Création et Gestion de Sites Internet (design, script, mascotte, jeux flash, etc...) |
cerise
| Gaël Modérateur
Inscrit le : 31/10/2008
|
# Le 06/07/2009 à 18:40
Honnêtement je comprends pas le problème. pourquoi tu ne pourrais pas mettre un .htaccess dans les dossiers enfants ? C'est d'ailleurs mieux que d'avoir un seul .htaccess dans le www car plus clair et plus concis puisque les règles qui concernent les dossiers se trouvent donc dans les .htaccess des dossiers |
cerise
| Gaël Modérateur
Inscrit le : 31/10/2008
|
# Le 06/07/2009 à 18:42
ok, alors désolé j'ai compris le contraire
Dans ce cas c'est ton .htaccess du dossier parent qui doit gérer les règles pour les dossiers enfants donc dans tes règles, c'est le chemin que tu modifies en ajoutant le nom du dossier |
MathieuC
| Mathieu Modérateur
Inscrit le : 15/07/2005
|
# Le 06/07/2009 à 18:48
J'avais mal lu aussi
Ton htaccess peut diriger vers un fichier PHP qui va inclure page1 ou page2 selon le mot cle.
Dans tous les cas il faudra bien que tu ais une relation entre tes mots cles et tes pages ("mot cle X" => page1, "mot cle Y" => page 2). Si c'est dans une BDD, ton fichier PHP va pouvoir tapper dedans avant d'inclure page1 ou page2. |
tonguide
| Jeremy Modérateur
Inscrit le : 09/05/2005
|
# Le 06/07/2009 à 20:03
Tu fais un peu comme Zend FW, tu renvois tout sur un index.php et tu fais le tri après, comme ça tu fais ce qu'il faut pour savoir quelle page appelée sans t'embêter avec ton htaccess. |
Akarys
| Thierry Membre
Inscrit le : 19/01/2008
|
# Le 07/07/2009 à 02:25
Bonjour XasFullWeb,
Mon expérience en multi-langues est qu'il vaut mieux bien séparer les choses :
www.site.com pointe sur $dir/www
en.site.com pointe sur $dir/en
fr.site.com pointe sur $dir/fr
...
Chaque $dir/<langue> contient
.htaccess (avec éventuellement des mots en anglais dans les RewriteRule)
robots.txt (avec nom de répertoires en anglais)
dico.inc.php (pour la génération des pages Php)
sitemap.*
favicon.ico (pour éviter les 404 dans les logs...)
index.php qui pointe sur un $dir/commun/index.php non visible du web
Pour faciliter la maintenance mieux vaut dès le début
prévoir un script qui génèrera les robots.txt et .htaccess
à partir d'une unique référence et du fichier dico associé à chaque langue.
Au final c'est assez simple et souple.
En espérant que ça aide.
Akarys |
XasFullWeb
| HERRIOT Membre
Inscrit le : 05/02/2009
|
# Le 08/07/2009 à 20:57
Merci pour vos réponses.
Akarys, je pense que je vais le faire comme ça, si j'ai des questions, je repasse ;)
Encore merci,
Xavier.
EDIT : J'ai compris le système, j'ai fais quelques tests c'est ok, par contre pour cette étape : "index.php qui pointe sur un $dir/commun/index.php non visible du web" comment t'y prends tu ?
Ex : En utilisant une page unique de "redirection" et des includes :
en.site.com pointe vers en/redirect.php qui affiche la page www/index.php
en.site.com/page1.html pointe vers en/redirect.php?page=page1.php qui affiche la page www/page1.php
=> en utilisant un include pas de problème, par contre dès l'instant qu'il y a des variables ça bloque (forcément) :
en.site.com/[id]/page1.html pointe vers en/redirect.php?page=page1.php?id=[id] qui affiche la page www/page1.php?id=[id]
Ou alors tu fais directement une boucle sur toutes les variables GET dans la page de redirection (à 1ère vue pas très sécurisé mais j'suis fatigué) ?
Merci d'avance,
Xavier.
(Message édité le 08-07-2009 à 23h00 par XasFullWeb) Full Web SARL : Création et Gestion de Sites Internet (design, script, mascotte, jeux flash, etc...) |
Akarys
| Thierry Membre
Inscrit le : 19/01/2008
|
# Le 09/07/2009 à 03:41
Bonjour XasFullWeb,
Euh désolé mais pas trop compris ton histoire de redirect ou de variables ??
Une solution simple si accès aux liens : cd $dir/en; ln -s ../commun/index.php .
Sinon (mutualisés de base) : <?php $site='en'; include('../commun/index.php'); ?> dans $dir/index.php
Ensuite pour les variables aucun soucis, tu récupères normalement les $_GET dans les 2 cas.
|
XasFullWeb
| HERRIOT Membre
Inscrit le : 05/02/2009
|
# Le 09/07/2009 à 18:07
Salut,
Merci, c'est bon, c'est juste que j'avais besoin de dormir :S, ça marche nikel.
A+,
Xavier.
Edit : Juste une petite question, j'utilise la méthode avec include, ça marche nikel, mais ta première méthode, je ne la connais pas : cd $dir/en; ln -s ../commun/index.php, ça s'utilise où ? dans le PHP ? le htaccess ? autre ?
(Message édité le 09-07-2009 à 19h59 par XasFullWeb) Full Web SARL : Création et Gestion de Sites Internet (design, script, mascotte, jeux flash, etc...) |
Akarys
| Thierry Membre
Inscrit le : 19/01/2008
|
# Le 10/07/2009 à 10:00
> ça s'utilise où ?
;)
Dans un shell Linux
C'est ce qu'on appelle en français un "lien logique",
et c'est le système qui fait le "pointer" sur un autre fichier.
|
XasFullWeb
| HERRIOT Membre
Inscrit le : 05/02/2009
|
# Le 11/07/2009 à 10:37
Salut,
Ok, je ne connaissais pas, merci pour l'explication ;)
A+,
Xavier. Full Web SARL : Création et Gestion de Sites Internet (design, script, mascotte, jeux flash, etc...) |