Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Serveurs (Apache, IIS,...) > Apache
Apache Forum d'entraide Apache. Avant de poster : Cours Apache, FAQ Apache
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/01/2011, 10h21   #1
Membre du Club
 
Inscription : juin 2006
Messages : 228
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 228
Points : 51
Points : 51
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

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

Citation:
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 :
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
serna est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2011, 22h37   #2
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 278
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 278
Points : 8 565
Points : 8 565
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
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2011, 09h44   #3
Membre du Club
 
Inscription : juin 2006
Messages : 228
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 228
Points : 51
Points : 51
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

Citation:
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 :
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
serna est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2011, 14h57   #4
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 278
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 278
Points : 8 565
Points : 8 565
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 :
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
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2011, 15h38   #5
Membre du Club
 
Inscription : juin 2006
Messages : 228
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 228
Points : 51
Points : 51
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 :
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 !
serna est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2011, 16h29   #6
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 278
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 278
Points : 8 565
Points : 8 565
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 :
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
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2011, 18h29   #7
Membre du Club
 
Inscription : juin 2006
Messages : 228
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 228
Points : 51
Points : 51
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 :
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
serna est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2011, 14h05   #8
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 278
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 278
Points : 8 565
Points : 8 565
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
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 10h41   #9
Membre du Club
 
Inscription : juin 2006
Messages : 228
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 228
Points : 51
Points : 51
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 !
serna est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 14h32   #10
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 278
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 278
Points : 8 565
Points : 8 565
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
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 15h11   #11
Membre du Club
 
Inscription : juin 2006
Messages : 228
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 228
Points : 51
Points : 51
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 ?
serna est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 17h12   #12
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 278
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 278
Points : 8 565
Points : 8 565
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
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 17h46   #13
Membre du Club
 
Inscription : juin 2006
Messages : 228
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 228
Points : 51
Points : 51
merci,
et bien ce que je voudrais faire c'est ceci :
actuellement j'ai des urls comme ça :


Code :
page.php?var01=valeurvar1&var02=valeurvar2&var03=valeurvar3&var04=valeurvar4&var05=valeurvar5&var06=valeurvar6&var07=valeurvar7&var08=valeurvar8
je voudrais arriver à ça

Code :
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.
serna est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 21h19   #14
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 278
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 278
Points : 8 565
Points : 8 565
Si, c'est possible, mais je ne vois toujours pas comment tu passes de motclé3
Citation:
à 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
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 16h47   #15
Membre du Club
 
Inscription : juin 2006
Messages : 228
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 228
Points : 51
Points : 51
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.

...
serna est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 18h40   #16
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 278
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 278
Points : 8 565
Points : 8 565
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
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 09h34   #17
Membre du Club
 
Inscription : juin 2006
Messages : 228
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 228
Points : 51
Points : 51
Citation:
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 )
serna est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 14h55   #18
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 278
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 278
Points : 8 565
Points : 8 565
Euh... Tu peux donner un exemple ? Si le mot-clé est "tagada", est-ce qu'on aura
Citation:
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
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2011, 08h41   #19
Membre du Club
 
Inscription : juin 2006
Messages : 228
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 228
Points : 51
Points : 51
Merci Mac,

Citation:
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 !
serna est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2011, 10h18   #20
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 278
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 278
Points : 8 565
Points : 8 565
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
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h42.


 
 
 
 
Partenaires

Hébergement Web