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
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 impliqué

- Messages: 273
- Inscription: Ven Oct 21, 2005 13:33
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 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.
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
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 impliqué

- Messages: 273
- Inscription: Ven Oct 21, 2005 13:33
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 :
- Optimiser le référencement d'un forum phpBB : réécriture d'URL
- Google au 4eme rang mondial en nb de visites
- Précisez vos recherches sur Google par la profondeur en répertoires
- Nouvelles fonctionnalités à l'essai pour la Google Toolbar
- Trouvez les bons mots-clés
- Référencement et Web 2.0
- 101 manières d'obtenir des liens pour son site web
- Description d'une page-type optimisée pour le référencement
- Suite de l'article sur le fichier .htaccess : l'URL rewriting
- L'URL Rewriting expliqué aux débutants
- 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 1 invité




le forum