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écupération d'un paramètre get d'une url rewritée


Sujet :

Apache

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 52
    Points : 35
    Points
    35
    Par défaut récupération d'un paramètre get d'une url rewritée
    Salut. Je suis entrain de développer un site pour une entreprise (ventes aux enchères, quoiqu'il s'agit plutôt d'un site vitrine, vu qu'ils ne veulent pas vendre par internet). Bref, là n'est pas le sujet.
    Ce site doit être multilingue (français, anglais, espagnol, portugais, chinois, arabe, allemand et russe). Je vous rassure, je n'ai pas de soucis pour récupérer les caractères spécifiques à chaque langue.
    En fait pour passer d'une langue à une autre, je clique sur des drapeaux, représentant la langue qu'on veut sélectionner.
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <div id="langages_gauche">
    	<a href="fr" title='France'><img src='css/pict/flag/fr_flag.jpg' /></a>
    	<a href="es" title='España'><img src='css/pict/flag/es_flag.jpg' /></a>
    	<a href="ar" title='السعودية'><img src='css/pict/flag/ar_flag.jpg' /></a>
    	<a href="de" title='Deutschland'><img src='css/pict/flag/de_flag.jpg' /></a>
    </div>
    <div id="langages_droite">
    	<a href="en" title='UK / USA'><img src='css/pict/flag/en_flag.jpg' /></a>
    	<a href="pt" title='Portugal'><img src='css/pict/flag/pt_flag.jpg' /></a>
    	<a href="zh" title='中国'><img src='css/pict/flag/zh_flag.jpg' /></a>
    	<a href="ru" title='Россия'><img src='css/pict/flag/ru_flag.jpg' /></a>
    </div>

    Voici mon code pour afficher les drapeaux, ce qui me donne des liens dans le genre : http://localhost/monsite/fr

    Mon htaccess ressemble à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Options +FollowSymLinks
    RewriteEngine On
    RewriteRule ^([a-z]*)$ ?langue=$1  [L]
    Mon problème c'est qu'en cliquant sur un drapeau, je n'arrive pas à récupérer la valeur de la langue, ma variable GET reste vide. Voici le résultat quand je fais un print_r($_GET);

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Array
    (
        [langue] => 
    )
    Est-ce que quelqu'un sait d'où ça pourrait provenir ?
    Merci d'avance pour vos réponses.

    ++

    Edit : désolé de l'avoir posté dans la mauvaise section, merci de l'avoir déplacé.

  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
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par debido67 Voir le message
    Mon htaccess ressemble à :
    Il ressemble à ce que tu indiques ou bien c'est réellement ce que tu donnes ? Peux-tu donner le contenu exact de ton .htaccess : j'ai du mal à croire qu'une URL en /monsite/fr puisse activer un RewriteRule ne faisant pas apparaître de / dans le premier membre.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 52
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par _Mac_ Voir le message
    Il ressemble à ce que tu indiques ou bien c'est réellement ce que tu donnes ? Peux-tu donner le contenu exact de ton .htaccess : j'ai du mal à croire qu'une URL en /monsite/fr puisse activer un RewriteRule ne faisant pas apparaître de / dans le premier membre.
    Salut _Mac_. Tout d'abord merci de te pencher sur mon cas.

    En fait c'est exactement ce à quoi ressemble mon htaccess, désolé pour le verbe "ressembler" qui porte à confusion.

    ++

  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
    Points : 12 977
    Points
    12 977
    Par défaut
    OK, pourquoi pas. Il est dans quel répertoire et quelle version d'Apache utilises-tu ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 52
    Points : 35
    Points
    35
    Par défaut
    Mon htaccess se trouve dans C:\wamp\www\monsite et ma version d'apache est la 2.2.8 (j'utilise la dernière version de wamp server).

    Et pour éviter que tu ne poses la question, oui j'ai activé l'url rewriting.

    ++

  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
    Points : 12 977
    Points
    12 977
    Par défaut
    Bon, c'est la meme, j'arrive pas à faire fonctionner les .htaccess avec Wamp Comment qu'on fait ?????? Mon .htaccess contient un Deny from all et il ne se passe rien...

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    A priori, le problème ici c'est votre motif, plus précisément le joker * (0 ou plus). Donc lorsque vous arrivez sur votre page sans "langue" de prédéfinie votre règle est activée pour devenir (définitivement) xxxxx?langue=. Donc le paramètre est bien là mais sans valeur. Il faut modifier ce joker en + pour obtenir l'effet escompté.

    Il vous manque peut être l'option QSA par ailleurs (qui résolvait "involontairement" ce souci par la même occasion puisque la variable langue, bien qu'initialement vide, comme je l'ai expliqué ci-dessus, était alors remplacer/écraser à chaque choix par la nouvelle valeur. En d'autres termes sans celle-ci et de par l'absence de redirection, votre URL serait restée fixe - xxxx?langue= - après une première - et dernière - réécriture n'ayant pas non plus d'autres correspondances sur d'autres règles).

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 52
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par julp Voir le message
    A priori, le problème ici c'est votre motif, plus précisément le joker * (0 ou plus). Donc lorsque vous arrivez sur votre page sans "langue" de prédéfinie votre règle est activée pour devenir (définitivement) xxxxx?langue=. Donc le paramètre est bien là mais sans valeur. Il faut modifier ce joker en + pour obtenir l'effet escompté.

    Il vous manque peut être l'option QSA par ailleurs (qui résolvait "involontairement" ce souci par la même occasion puisque la variable langue, bien qu'initialement vide, comme je l'ai expliqué ci-dessus, était alors remplacer/écraser à chaque choix par la nouvelle valeur. En d'autres termes sans celle-ci et de par l'absence de redirection, votre URL serait restée fixe - xxxx?langue= - après une première - et dernière - réécriture n'ayant pas non plus d'autres correspondances sur d'autres règles).
    Salut. En fait j'avais pensé à faire une redirection si aucune langue n'est sélectionnée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    if ($_SESSION['locale'] == "" || !isset ($_SESSION['locale'])) {
        if (false !== ($check = checkLocale ())) {
            $_SESSION['locale'] = $check;
    	?>
    	<meta http-equiv="refresh" content="0; url=http://localhost/monsite/<?php echo $_SESSION['locale']; ?>"/>
    	<?php
        }
        else {
            $_SESSION['locale'] = 'en'; // on met une langue par défaut dans une variable de session
    	?>
    	<meta http-equiv="refresh" content="0; url=http://localhost/monsite/<?php echo $_SESSION['locale']; ?>"/>
    	<?php
        }
    }
    Mais je vais changer mon htaccess en remplaçant l'étoile par un plus, je vous tiens au courant comme tu le suggères.

    PS : tu me vouvoies ou tu nous parles à nous deux ? Parce que si tu me vouvoies, désolé de te (enfin vous) tutoyer.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 52
    Points : 35
    Points
    35
    Par défaut
    C'est encore moi. Je viens de changer mon htaccess et de remplacer mon étoile par un plus et ça marche. Merci julp pour la solution.

    Donc mon htaccess donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Options +FollowSymLinks
    RewriteEngine On
    RewriteRule ^([a-z]+)$ ?langue=$1  [L]
    au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Options +FollowSymLinks
    RewriteEngine On
    RewriteRule ^([a-z]*)$ ?langue=$1  [L]
    Citation Envoyé par _Mac_ Voir le message
    Bon, c'est la meme, j'arrive pas à faire fonctionner les .htaccess avec Wamp Comment qu'on fait ?????? Mon .htaccess contient un Deny from all et il ne se passe rien...
    Oui _Mac_, ce n'est pas facile de faire fonctionner la redirection url avec wamp, il affiche des fois des messages d'erreur avant de cocher rewrite_module.

    Pour ceux que ça intéresse d'activer ce module dans wamp :
    • Allez dans httpd.conf, enlevez le # devant LoadModule rewrite_module modules/mod_rewrite.so
    • Allez dans le php.ini, enlevez le ; devant "a=href,area=href,frame=src,input=src,form=fakeentry"
    • Redémarrez les services dans wamp (ou redémarrez le complètement)


    Et normalement en allant dans Apache module, le rewrite_module devrait être coché.

    Bon, il est temps de cliquer sur le bouton résolu. Merci encore de votre aide à tous les deux et j'espère que ce sujet permettra à certains de les aider.

    ++

    PS : plus qu'à trouver un ou plusieurs traducteurs HUMAIN, plus compétents que Google .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Suppression d'une variable GET d'une URL
    Par titou624 dans le forum Langage
    Réponses: 4
    Dernier message: 31/08/2011, 12h25
  2. Plusieurs paramètres (GET) dans l'url
    Par Gregory.M dans le forum Langage
    Réponses: 2
    Dernier message: 03/10/2008, 19h02
  3. Passer des paramètres cachés dans une URL?
    Par PeteZah dans le forum C#
    Réponses: 2
    Dernier message: 09/09/2008, 15h41
  4. Supprimer une variable GET dans une URL
    Par rophi dans le forum Langage
    Réponses: 2
    Dernier message: 26/02/2008, 02h25

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