réécriture d'url du type: www.site.fr/*.shtml?*=*

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

réécriture d'url du type: www.site.fr/*.shtml?*=*

Message le Jeu Nov 03, 2005 13:43

bonjour,

j'essaye de réécrire une url du type indiqué ci-dessus (titre).
Code: Tout sélectionner
RewriteRule ^([/a-zA-Z-]+)\.shtml\?([a-zA-Z-]+)=([a-zA-Z-]+)$ index.php?&page=$1&$2=$3 [L]


Le problème est simplement de faire prendre le \?
J'ai tester comme ceci RewriteRule ^([/a-zA-Z-]+)\.shtml\? mais ca ne fonctionne pas lorsque je met en url www.example.fr/test.shtml? !
Donc j'ai identifier le problème étant à ce niveau.

Pouvez vous m'aider ?

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Jeu Nov 03, 2005 18:43

personne ne peut m'aider ?
J'ai vraiment besoin d'aide pour savoir comment inserer un ? dans l'url comme expliqué ci-dessus.

Help me!
thinks !

ChezThierry
WRInaute impliqué
WRInaute impliqué
 
Messages: 273
Inscription: Ven Oct 21, 2005 13:33

Message le Jeu Nov 03, 2005 19:56

tu ne peux pas faire comme ça. mod_rewrite va considérer deux entités :

REQUEST_URI et QUERY_STRING
la partie droite de ton URL après le ? sera dans QUERY_STRING et la 1ere partie dans REQUEST_URI

Or, dans la partie gauche d'une RewriteRule, tu ne traites que la partie REQUEST_URI...

Tu peux, de plus, utiliser l'option QSA qui ajoutera automatiquement les variables passées dans l'URL originale, comme tu sembles vouloir le faire ici en ajoutant $2=$3.

Donc, si tu veux juste ajouter page=$1, quel que soit le nombre de variables (0, 1, 5, etc...), fais juste :


Code: Tout sélectionner
RewriteRule ^([a-zA-Z-]+)\.shtml$ /index.php?page=$1 [L,QSA]


Si par contre tu veux que cela ne se fasse que lorsque tu as UNE seule variable (d'ou ton $2=$3), alors fais ceci :

Code: Tout sélectionner
RewriteCond %{QUERY_STRING} ^[a-zA-Z-]+=[a-zA-Z-]+$
RewriteRule ^([a-zA-Z-]+)\.shtml$ /index.php?page=$1 [L,QSA]

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Jeu Nov 03, 2005 20:02

Super !!!!!
Merci pour ces explications très clair et enrichissante !!!!

Merci beaucoup à toi !
Je vais voir tout ceci de se pas !


Madrileño
Madrileño
Madrileño
 
Messages: 19982
Inscription: Mer Juil 07, 2004 12:14

Message le Jeu Nov 03, 2005 20:22

Madrileño a écrit:
Il existe des URL prévues pour donner des exemples: "example.com", "example.net" et "example.org" (avec un "a"), voir http://www.rfc-editor.org/rfc/rfc2606.txt , section 3.

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Jeu Nov 03, 2005 20:27

ok ben j'apprends quelque chose en plus, par contre je ne suis pas très english ! ce sont des nom de domaine réservé ?


Madrileño
Madrileño
Madrileño
 
Messages: 19982
Inscription: Mer Juil 07, 2004 12:14

Message le Jeu Nov 03, 2005 20:30


thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Jeu Nov 03, 2005 21:15

par contre sur ce code:
Code: Tout sélectionner
RewriteCond %{QUERY_STRING} ^[a-zA-Z-]+=[a-zA-Z-]+$
RewriteRule ^([a-zA-Z-]+)\.shtml$ /index.php?page=$1 [L,QSA]


le QSA est-il encore necessaire ? pas pour cette condition si ?
et la ca ne réponds pas vraiment à mon attente:

www.example.fr/test.php?rubrik=test&num=3

réécrire en /index.php?rub=test&num=dernier
par exemple....

ChezThierry
WRInaute impliqué
WRInaute impliqué
 
Messages: 273
Inscription: Ven Oct 21, 2005 13:33

Message le Jeu Nov 03, 2005 21:48

Je ne comprends pas ton exemple, sur quelle base veux-tu que mod_rewrite sache qu'il doit replacer num=3 par num=dernier ? De plus, dans ton exemple, tu cites test.php alors que tu veux matcher un fichier terminant en .shtml (et non .php)

Sinon, oui, le QSA reste obligatoire même après la RewriteCond qui n'est là que pour vérifier qu'on a UN argument et UN SEUL. Sinon, tu peux faire des groupes dans le RewriteCond, et récupérer leur contenu dans la suite avec %1, %2 au lieu de $1, $2, par exemple (et donc sans QSA) mais je ne vois pas l'interet par rapport au QSA, sauf pour modifier la variable en question :

Code: Tout sélectionner
RewriteCond %{QUERY_STRING} ^([a-zA-Z-]+)=([a-zA-Z-]+)$
RewriteRule ^([a-zA-Z-]+)\.shtml$ /index.php?page=$1&%1=%2 [L]

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Jeu Nov 03, 2005 21:53

ok j'ai bien compris
(pour l'exemple erreur de ma part .php)

merci encore.
j'ai essayé ca fonctionne nikeL ! ;)


Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité