réécriture d'url du type: www.site.fr/*.shtml?*=*
10 messages
• Page 1 sur 1
Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics
- thierry8
- WRInaute accro

- Messages: 3251
- Inscription: 11 Juil 2005
réécriture d'url du type: www.site.fr/*.shtml?*=*
bonjour,
j'essaye de réécrire une url du type indiqué ci-dessus (titre).
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 ?
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 ?
- ChezThierry
- WRInaute occasionnel

- Messages: 273
- Inscription: 21 Oct 2005
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 :
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 :
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]
-

Madrileño - Madrileño

- Messages: 28413
- Inscription: 7 Juil 2004
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.
-

Madrileño - Madrileño

- Messages: 28413
- Inscription: 7 Juil 2004
Oui et la citation est de ce post :
http://www.webrankinfo.com/forums/viewtopic_24403.htm
ou
http://www.webrankinfo.com/forums/viewtopic_27877.htm

http://www.webrankinfo.com/forums/viewtopic_24403.htm
ou
http://www.webrankinfo.com/forums/viewtopic_27877.htm
- thierry8
- WRInaute accro

- Messages: 3251
- Inscription: 11 Juil 2005
par contre sur ce code:
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....
- 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 occasionnel

- Messages: 273
- Inscription: 21 Oct 2005
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 :
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]
10 messages
• Page 1 sur 1
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 :
- Tester la validité d'un lien
Cet outil vous permet de tester la validité d'un lien pour le référencement. Il vous indique la nature du lien (lien en dur, redirection bien gérée par les moteurs ou redirection mal gérée par les moteurs).
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
