IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

Réécriture en fonction de la langue


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2010
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cambodge

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2010
    Messages : 221
    Par défaut Réécriture en fonction de la langue
    Bonjour,

    Tout d'abord excusez mes fautes, je n'ai pas de clavier azerty.

    Mais question est la suivante:
    J'ai un site en trois langues. Si la langue de l'utilisateur n'est pas reprise, je redirige vers l'anglais.

    Comment dans un fichier .htaccess on peut faire ce genre de condition avec ma structure suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    RewriteRule ^emailing-([a-z]+)$ index.php?section=emailing&lang=$1 [L]
    Le but de reconnaitre la langue me permettrait de reecrire l'url dans la langue choisie ou definie.

    Un derniere chose, ce site est en francais, anglais et khmer. Puis je mettre des caracteres "exotiques" dans mes regle de reecriture? Si oui comment?

    Merci d'avance,
    David

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Citation Envoyé par andaman Voir le message
    Comment dans un fichier .htaccess on peut faire ce genre de condition avec ma structure suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    RewriteRule ^emailing-([a-z]+)$ index.php?section=emailing&lang=$1 [L]
    Je ne comprends pas la question : avec cette règle, emailing-fr renvoie vers index.php?section=emailing&lang=fr, emailing-en renvoie vers index.php?section=emailing&lang=en, etc. Par rapport à ça, quel est le besoin ? Faire en sorte que seuls -en, -fr et -km soient renvoyés vers index.php ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2010
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cambodge

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2010
    Messages : 221
    Par défaut
    Non, je me suis peut etre mal explique:

    Voila ce que je desire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #Anglais
    RewriteRule ^emailing-([a-z]+)$ index.php?section=emailing&lang=$1 [L]
     
    #Francais
    RewriteRule ^envoi-emailing-([a-z]+)$ index.php?section=emailing&lang=$1 [L]
     
    #khmer
    RewriteRule ^សដេររ-([a-z]+)$ index.php?section=emailing&lang=$1 [L]

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    A quoi te sert ton $1 ?

    Ces 3 règles ne fonctionnent pas ? A priori au moins les 2 premières devraient marcher. Pour la 3ème, je ne sais pas.

  5. #5
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2010
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cambodge

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2010
    Messages : 221
    Par défaut
    Effectivement les 2 premieres regles fonctionnent mais me limitent.
    Je m'explique:
    Dans l exemple ci-dessous, le texte est en dur. Le parametre $1 me permet de recuperer le $_GET de la lang soit fr en ou kh

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #Anglais
    RewriteRule ^emailing-([a-z]+)$ index.php?section=emailing&lang=$1 [L]
     
    #Francais
    RewriteRule ^envoi-emailing-([a-z]+)$ index.php?section=emailing&lang=$1 [L]
     
    #khmer
    RewriteRule ^សដេររ-([a-z]+)$ index.php?section=emailing&lang=$1 [L]
    Cependant, dans un syteme que je desire mettre en place avec partie admin
    La partie texte en dur ( a gauche de l expression reguliere) viendrait de la base de donnee afin de gerer la reecriture d urls en 3 langues. Je suis oblige de faire cela pour le referencement.

    Comment puis-je faire?

    Merci d'avance.
    David

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    C'est pour ça que je disais que je ne comprenais pas la question. Globalement, tu as 2 solutions : soit faire comme font la plupart des CMS type Drupal : rediriger toutes les URL vers un unique script (index.php) qui fait le découpage de l'URL pour trouver la lange, la page demandée, etc. ; soit partir sur ta solution avec Apache qui fait le découpage.

    Si on part sur ta solution, le nom de la page étant issue d'une base de données, on en revient généralement à avoir cette partie "page" qui est la même quelque soit la langue suivi de ([a-z]+) qui correspond à la langue. C'est quasi incontournable si cette partie "page" est utilisée dans un paramètre d'URL (le paramètre "section"). Je pense que tu n'auras pas beaucoup d'autre choix si tu ne veux pas modifier le .htaccess à chaque nouvelle page.

    Pour la partie langue, tout ce qu'il faut c'est qu'Apache puisse la reconnaître sans problème. Le ([a-z]+) est pas mal mais on peut aussi utiliser une syntaxe qui me semble pas mal : (langue1|langue2|langue3|...).

    Au final, si on fait la synthèse des 2, on tombe sur la règle suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(.*)-(fr|en|km)$ index.php?section=$1&lang=$2 [L]
    C'est la version générique de ma première réponse : tu auras les URL emailing-fr, emailing-en et emailing-km.

    Pour pouvoir gérer envoi-emailing-fr uniquement (et pas envoi-emailing-en par exemple), tu as deux possibilités :
    • Coder en dur l'URL dans le .htaccess. C'est pas hyper flexible.
    • Gérer cette impossibilité par le code dans index.php.

Discussions similaires

  1. Réponses: 5
    Dernier message: 31/01/2008, 14h26
  2. Réponses: 2
    Dernier message: 30/11/2006, 16h33
  3. Réponses: 12
    Dernier message: 10/03/2006, 11h12
  4. comment rediriger sur une page html en fonction de la langue
    Par pierrot10 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 10/08/2005, 11h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo