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 en ne gardant que deux paramètres


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Par défaut URL rewriting en ne gardant que deux paramètres
    bonjour,

    je voudrais mettre une règle de réécriture d'url qui permette la chose suivante
    cette url

    test2.php?id_var=150&var01=marcel&var02=bluzar&var03=france&var04=RODEZ&var05=membres&var06=tartempion&var07=peluche&var08=AVEYRON
    deviendrait

    motclé01-motclé02-RODEZ-AVEYRON.html
    en fait je veux récupérer de l'url existante actuellement les deux variables en gras + mettre deux mots clés avant ( toujours les mêmes )

    j'ai testé ça mais je suis loin de ce que je veux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Options +FollowSymlinks
    RewriteEngine on
     
    RewriteRule ^(.*)-(.*)-(.*)-(.*)-(.*)-(.*)-(.*)-(.*)-(.*)\.html$ /repertoire/test2.php?id_var=$1&var1=$2&var2=$3&var3=$4&var4=$5&var5=$6&var6=$7&var7=$8&var8=$9 [L]
    merci pour vos pistes

  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
    Rien compris : tu parles d'avoir des URL en motclé01-motclé02-RODEZ-AVEYRON.html, donc 4 mots (ne contenant pas -) séparés par un - alors que ton expression régulière en utilise 9. Y a comme qui dirait un truc qui m'échappe

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Par défaut
    merci pour la réponse,
    effectivement j'ai fait un peu n'importe quoi



    en fait , actuellement je fait passer , dynamiquement, par l'url 9 variables par exemple ceci

    test2.php?id_var=150&var01=marcel&var02=bluzar&var03=france&var04=BOBIGNY&var05=membres&var06=tartempion&var07=peluche&var08=Seine-saint-denis
    je voudrais transformer cette URL en quelque chose de plus simple , ne retenir que les variable en gras ( la ville et le département ) plus avant 2 mots clés

    ( à noter que comme je risque, comme je l'illustre dans cet exemple d'avior dans ces 2 variables des valeurs avec des "-", comme pour seine-saint-denis, je vais opter pour l'underscore)

    une fois réecrite l'url deviendrait

    motclé1_motclé2_BOBIGNY_Seine-saint-denis.html

    j'ai modifié la regle la voici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Options +FollowSymlinks
    RewriteEngine on
    
    RewriteRule ^motcle1_mocle2(.*)_(.*)\.html$ /repertoire/test2.php?id_var=150&var01=marcel&var02=bluzar&var03=france&var4=$1&var05=membres&var06=tartempion&var07=peluche&var8=$2 [L]
    quant je tape motcle1_mocle2_BOBIGNY_Seine-saint-denis.html ça marche j'ai bien la page mais le problème c'est que mes urls actuels sont fabriqué dynamiquement avec une requet , donc des milliers d'urls possibles, comment faire pour éviter de faire un htacces avec des milliers de lignes en dur ?

    encore merci pour le coup de main

  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
    Si les 2 paramètres à récupérer sont bien les deux derniers du nom, c'est assez facile : il suffit de repérer le dernier et l'avant dernier _ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule _([^_]*)_([^_]*)\.html$ /repertoire/test2.php?id_var=150&var01=marcel&var02=bluzar&var03=france&var4=$1&var05=membres&var06=tartempion&var07=peluche&var8=$2 [L]

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Par défaut
    merci
    mais par rapport a la règle que j'ai mis , je ne vois pas ce qui change.

    enfin je me trompe peut etre ?

    y'a t'il un moyen tout en gardant toutes les variables de l'url avant "rewritage" de ne changer que celle qui ont comme nom de variable $1 et $2 .


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule _([^_]*)_([^_]*)\.html$ /repertoire/test2.php?id_var=$3&var01=$4&var02=$5&var03=$6&var4=$1&var05=$6&var06=$7&var07=$8&var8=$2 [L]
    comme ça je met une seule fois cette règle qui sera valable pour toutes les valeurs de variables de l'url , et de plus je récupère les valeurs des variables dans la page d'affichage ( j'en ai besoin )

    mais quel est la syntaxe de cette règle si elle existe !

    encore merci pour tes lumières !

  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
    Citation Envoyé par serna Voir le message
    merci
    mais par rapport a la règle que j'ai mis , je ne vois pas ce qui change.

    enfin je me trompe peut etre ?
    Ben juste que .* n'a pas du tout le même sens que [^_]* qui est plus restrictif puisqu'il exclut le caractère _. .* signifie "n'importe quel caractère, de 0 à n fois" alors que [^_]* signifie "tout sauf _, de 0 à n fois". Ce filtre d'exclusion permet d'identifier le dernier et l'avant dernier _, ce que ne permet pas clairement .*.


    Je ne suis vraiment pas sûr d'avoir compris ce que tu veux faire. Essaie d'ajouter le flag QSA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ... ... [QSA,L]

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/03/2015, 08h16
  2. Réponses: 4
    Dernier message: 29/11/2012, 18h54
  3. Réponses: 2
    Dernier message: 06/04/2011, 18h56
  4. Réponses: 11
    Dernier message: 28/02/2009, 00h50
  5. URL rewriting, ou est ce que ca coince ?
    Par Matth_S dans le forum Apache
    Réponses: 1
    Dernier message: 03/08/2006, 18h35

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