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 :

URL rewriting et plusieurs variables


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    designer, développeur & webmaster
    Inscrit en
    Janvier 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : designer, développeur & webmaster

    Informations forums :
    Inscription : Janvier 2008
    Messages : 20
    Par défaut URL rewriting et plusieurs variables
    bonjour,
    je débute en url rewriting, aussi pardonnez cette question de débutant :

    je souhaite transformer une adresse de type foo.php?lang=fr&post=10
    ent foo.html,fr,10

    jusqu'ici, je crois avoir trouvé comment faire avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ([^.]+),([a-z]{2}),([^-]*)\.html$ $1.php?lang=$2&post=$3 [L]
    Je suis tjrs assuré d'avoir la variable lang, mais la variable post n'est pas systématique. Aussi il faut que je fasse appel à une RewriteCond pour tester sa présence et l'intégrer conditionnellement à ma RewriteRule , et là… j'ai besoin de votre aide !

    Merci d'avance

  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
    Tu peux tenter de mettre 2 RewriteRule : un quand la variable post est là et un autre quand elle n'est pas là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteRule ([^.]+),([a-z]{2}),([^-]*)\.html$ $1.php?lang=$2&post=$3 [L]
    RewriteRule ([^.]+),([a-z]{2})\.html$ $1.php?lang=$2 [L]
    Si ça ne marche pas, tu peux essayer d'ajouter la , dans la liste des caractères à exclure dans le premier groupe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteRule ([^.]+),([a-z]{2}),([^-]*)\.html$ $1.php?lang=$2&post=$3 [L]
    RewriteRule ([^.,]+),([a-z]{2})\.html$ $1.php?lang=$2 [L]

  3. #3
    Membre averti
    Homme Profil pro
    designer, développeur & webmaster
    Inscrit en
    Janvier 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : designer, développeur & webmaster

    Informations forums :
    Inscription : Janvier 2008
    Messages : 20
    Par défaut
    merci ! ta première suggestion fonctionne parfaitement.

    Hélas, petit défaut que je viens de constater : la mise en place de ces 2 règles empêche désormais l'adresse www.monsite.com/ d'afficher la page index.php par défaut ! Comment faire ?

  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
    Pas très normal, les règles cherchent un truc qui se termine par .html. Tu peux donner ton fichier .htaccess complet ? Ca doit être un conflit avec d'autres règles.

  5. #5
    Membre averti
    Homme Profil pro
    designer, développeur & webmaster
    Inscrit en
    Janvier 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : designer, développeur & webmaster

    Informations forums :
    Inscription : Janvier 2008
    Messages : 20
    Par défaut
    je pense que c'est cette règle que j'avais mise en premier (je suis en local):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    RewriteRule ^([a-zA-Z0-9-]*)$	http://localhost:8888/site/pages/$1.php [L]
    je l'ai écrite pour simplifier mes adresses (ex : site/biniou renvoie à site/pages/biniou.php). mais du coup si je tape site/ tout court, ça ne m'affiche pas la page site/index.php car ça pointe vers site/pages/.php -si j'ai bien compris .
    Comment puis-je résoudre ce problème ?

  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
    Supprimer la règle ?

    Il est où, ton .htaccess ? Dans le répertoire site ? Si c'est le cas, essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteRule ^([a-zA-Z0-9-]+)$	http://localhost:8888/site/pages/$1.php [L]
    Profites-en pour retirer le http://localhost:8888 qui ne sert à rien si c'est le même serveur Web.

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

Discussions similaires

  1. url rewriting avec plusieur .htaccess
    Par peckhouse dans le forum Langages de programmation
    Réponses: 0
    Dernier message: 27/10/2009, 10h20
  2. règle url rewriting, conservation des variables GET
    Par speedev dans le forum Apache
    Réponses: 1
    Dernier message: 18/05/2009, 10h33
  3. Réponses: 4
    Dernier message: 28/01/2008, 17h55
  4. [URL REWRITING] Sous Domaine + Variables
    Par Early Reflexions dans le forum Apache
    Réponses: 3
    Dernier message: 28/12/2007, 01h58
  5. Réponses: 6
    Dernier message: 19/12/2005, 13h41

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