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

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    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
    Points : 12 977
    Points
    12 977
    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

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    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
    Points : 12 977
    Points
    12 977
    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]

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    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
    Points : 12 977
    Points
    12 977
    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]

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut
    merci,

    en testant ta règle , il me prend les deux PREMIÈRES variables de l'Url , j'ai donc modifié mon url d'origine pour mettre celles qui m’intéressent en 2em et 3em position, la première position étant celle de la variable de l'id.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule _([^_]*_([^_]*)_([^_]*)\.html$ /repertoire/test2.php?id_var=$1&villes=$2&departement=$3&var2=$4&var3=$5&var4=$6&var5=$7&var8=$8&var9=$9 [QSA,L]
    l’osque j'écrit par exemple
    15230_ANDRESY_Yvelines.html , il m'affiche certaine donnée , mais les autres qui ont besoin de recevoir les autres variables d'url , ne s'affichent pas

    soit je modifie ma façons d'afficher ses données soit... autre chose

  8. #8
    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
    Tu utilises $4, $5, etc. dans ta réécriture sans les identifier dans ton filtre d'URL (tu as 3 groupes entre parenthèses, donc tu ne peux utiliser que $1, $2 et $3). Si tu ne donnes pas ces paramètres d'une façon ou d'une autre, Apache aura énormément de mal à en deviner la valeur

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut
    merci,
    effectivement si je ne passe pas ces paramètres c'est impossible d'afficher derrière les données voulues.

    y'a t'il une règles de réécriture qui permettent de passer les autres variables de la façon suivante :

    $1,$2 et $3 sont réécrit tel que dans la règle données plus haut , mais ensuite toutes les autres variables ( $4,$5,$6 , etc) sont réécrites avec la même valeur commune ( un mot clé par exemple )

    sinon tant pis je vais regarder d'autre solutions

    encore merci pour le coup de main !

  10. #10
    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 serna Voir le message
    mais ensuite toutes les autres variables ( $4,$5,$6 , etc) sont réécrites avec la même valeur commune
    Et qui est calculée comment ? Toujours la même question : comment Apache connaît cette valeur commune ?

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut
    merci Mac,

    peut être par une règle qui dirait :
    si la variable a pour nom l'un de ces marqueurs suivants $4,$5,$6 (etc..) alors transmet leur valeurs propre mais affiche dans l'url le même mot clé.

    mais ça me semble pas possible , car comment la page va différencier tout ça ...


    encore merci Mac

    ps : est ce la réécriture d’URL récursive serait une piste ?

  12. #12
    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
    Tu peux donner un exemple de ce que tu voudrais faire car je ne comprends pas ?

    Le récursif est possible mais une fois de plus, si tu ne donnes pas à Apache les valeurs que tu veux utiliser, il ne pourra pas les deviner.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut
    merci,
    et bien ce que je voudrais faire c'est ceci :
    actuellement j'ai des urls comme ça :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    page.php?var01=valeurvar1&var02=valeurvar2&var03=valeurvar3&var04=valeurvar4&var05=valeurvar5&var06=valeurvar6&var07=valeurvar7&var08=valeurvar8
    je voudrais arriver à ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    motclé1_motclé2_valeurvar1_valeurvar2_valeurvar3_motclé3.html
    mais ce n'est peut être pas possible sans perdre au passage les variables qui suivent les 3 premières.

  14. #14
    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
    Si, c'est possible, mais je ne vois toujours pas comment tu passes de motclé3
    à var04=valeurvar4&var05=valeurvar5&var06=valeurvar6&var07=valeurvar7&var08=valeurvar8

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut
    ce qui suit est pur hypothèse !

    peut être en passant par un script php + htacces

    chaque variable ( de la 4 à la 9, celle qui doivent être converties en un seule mot clé ) est "repéré" par une regex selon l'ordre ou elle écrite dans l'url ,une regle dans le htaccess attribue un mot clé pour ces 6 variable , et sur la page qui affiche les données , le script analyse cette url en attribuant au mot clé de l'url les 6 valeurs, une sorte de dispatching fait par une regex.

    ...

  16. #16
    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
    Oui, bien sûr, c'est faisable, mais j'ai peur que ça fasse un .htaccess difficile à maintenir. En gros, la question est de savoir d'où vient le mapping mot clé / les 6 variables et quel est le nombre de mots clés dont on parle ?

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut
    la question est de savoir d'où vient le mapping mot clé / les 6 variables et quel est le nombre de mots clés dont on parle ?
    d'avance désolé pour l' hypothèse qui suit ci c'est du délire.

    il est peut être possible de faire une regex qui va attribuer à chacune des 6 variables qui nous intéressent un marqueur. Chaque marqueur va être décodé et correspondre à l'une des 6 LETTRES d'un mot clé, ainsi dans l'url une fois modifiée on aura notre mot clé et le passage des 6 variables. les 6 lettres devront être contiguë sans underscore entre elle à l'inverse des 3 premières variable du début de l'url


    au final on a donc un ou deux mot clé puis les 3 premières variable tel qu'écrite ci dessus , puis les 6 valeurs réécrite en 6 lettres qui forme après traitement les 6 lettre d'un mot clé ( lui étant toujours identique )

  18. #18
    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
    Euh... Tu peux donner un exemple ? Si le mot-clé est "tagada", est-ce qu'on aura
    var04=t&var05=a&var06=g&var07=a&var08=d&var09=a
    ?

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut
    Merci Mac,

    Si le mot-clé est "tagada", est-ce qu'on aura var04=t&var05=a&var06=g&var07=a&var08=d&var09=a ?
    c'est exactement ça. cette solution me semble plus simple ( est ce que c'est possible ?) que celle évoqué plus haut ( script php + htacces , regex )
    car au fond ce qui compte c'est d'avoir au final une url plus simple que celle avec les 9 variables.

    est t'il possible d'attribuer à l'url réécrite non pas la valeur de $4,$5 etc..mais le nom même de la variable ( ici les lettres composants le mot clé) tout en passant les valeurs des variables pour l'affichage correcte sur la page cible.

    encore merci pour le coup de main !

  20. #20
    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 serna Voir le message
    est t'il possible d'attribuer à l'url réécrite non pas la valeur de $4,$5 etc..mais le nom même de la variable ( ici les lettres composants le mot clé) tout en passant les valeurs des variables pour l'affichage correcte sur la page cible.
    Pareil, pas tout compris : tu peux donner un exemple ?

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

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