Rewriting url plusieurs pages

Eléphant du PHP | 233 Messages

07 oct. 2017, 14:51

Bonjour à tous,
j'ai un peu de mal à m'en sortir sur le fichier htaccess en effet, je voudrais réécrire les pages (quand l'utilisateur change de page).

voila ce que je fais déjà :
RewriteRule ^mon_compte:([a-z]+)-([0-9]+)$ /mon_compte.php?action=$1&compteur=$2 
or si je rajout une condition $3 après, l'url prend en compte le compteur et pas la page. Il faudrait que je remplace page par compteur dans mon code php mais c'est pas le but...
RewriteRule ^mon_compte:([a-z]+)-([0-9]+)-)-([0-9]+)$ /mon_compte.php?action=$1&compteur=$2&page=$3 
Bien sûr l'url est correcte si je remplace compteur par page mais du coup l'url est incorrecte avec compteur.
Y-a-t-il une astuce ?
Je ne sais pas si j'ai été clair mais dites moi, je compléterai.

Merci à tous

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

16 oct. 2017, 18:12

Pas sûr d'avoir compris.
Peux tu donner des exemples de ce qui doit s'afficher dans la barre d'adresse et de ce la façon dont elle doivent être transformées (avec les mêmes valeurs donc).

Par ailleurs, je te recommande de ne pas utiliser le caractère deux-points dans tes urls car il risque d'être encodé par certains navigateurs en %3A ce qui n'est pas très joli et incompréhensible pour l'utilisateur.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 233 Messages

16 oct. 2017, 19:23

Bonjour,

voici un exemple de l'affichage dans la barre d'adresse :
https://monsite.fr/mon_compte.php?action=sites&page=2

je suis obligé de laisser l'adresse comme elle est car "page" est réécrit par "compteur" :
mon_compte.php?action=$1&compteur=$2 
les url qui contiennent "compteur" sont réécrites correctement :

https://monsite.fr/mon_compte:sites-1.html

Pour les 2 points j'ai prie note, je vais modifier

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

17 oct. 2017, 11:30

je suis obligé de laisser l'adresse comme elle est car "page" est réécrit par "compteur" :
mon_compte.php?action=$1&compteur=$2 
C'est à dire ? tu as d'autres règles de réécritures que celle indiquée dans ton premier post ?
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 233 Messages

17 oct. 2017, 13:10

Bonjour,
je vous donne les 3 seules règles :

RewriteRule ^mon_compte$ /mon_compte.php
RewriteRule ^mon_compte:([a-z]+)$ /mon_compte.php?action=$1
RewriteRule ^mon_compte:([a-z]+)-([0-9]+)$ /mon_compte.php?action=$1&compteur=$2 

c'est si je rajoute la règle ci-dessous que la réécriture de l'URL prend en compte "compteur" et pas "page" :

RewriteRule ^mon_compte:([a-z]+)-([0-9]+)-([0-9]+)$ /mon_compte.php?action=$1&compteur=$2&page=$3

J'avoue ne pas comprendre...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

17 oct. 2017, 14:03

Ce qui est bizarre c'est que tu ajoutes .html à la fin alors que tu n'as pas cela dans tes règles.

Si je testes tes règles, elles ont l'air de fonctionner correctement :
http://htaccess.mwl.be?share=0fba6ca2-7 ... 142f0c473d
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 233 Messages

17 oct. 2017, 14:12

C'est vrai, il s'agit d'une erreur lorsque j'ai écris l'URL j'ai ajouté .html mais c'est pas le cas.

Par contre je confirme que la troisième ne fonctionne pas quand j'ai dans l'URL "compteur" ($_GET['compteur"]) et "page" ($_GET['page']) :

RewriteRule ^mon_compte:([a-z]+)-([0-9]+)-([0-9]+)$ /mon_compte.php?action=$1&compteur=$2&page=$3

Edite :

avec cette url
<a href=\"mon_compte:sites-".($page-1)."\" >&laquo;</a></li> ";
et l'URL réécrite comme ci dessus "page" et remplacé par "compteur" du coup comme "compteur" n'existe pas l'URL ne fonctionne pas...
Modifié en dernier par cris84 le 17 oct. 2017, 14:19, modifié 1 fois.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

17 oct. 2017, 14:19

Regarde le lien que je t'ai indiqué qui permet de tester ton url rewriting : http://htaccess.mwl.be/?share=0fba6ca2- ... 142f0c473d


Si tu appelles l'url :
:arrow: https://monsite.fr/mon_compte:sites-1-5
Alors la transformation effectuée est correcte :
:arrow: https://monsite.fr/mon_compte.php?actio ... r=1&page=5

Si dans ton script PHP tu n'arrives pas à récupérer les bonnes valeurs, fait un var_dump($_GET) pour vérifier ce que tu reçois.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 233 Messages

17 oct. 2017, 14:49

Alors effectivement le résultat avec print_r($_GET); :

Array ( [action] => sites [compteur] => 2 ) 2 étant la page appelée.

si je supprime :
RewriteRule ^mon_compte:([a-z]+)-([0-9]+)$ /test/mon_compte.php?action=$1&compteur=$2
print_r($_GET); :

Array ( [action] => sites [page] => 2 )

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

17 oct. 2017, 18:29

En appelant quelle url ?

Essaye de reproduire via l'outil que je t'ai indiqué ce que tu obtiens et ensuite fait un "share" des 2 cas qui te semble incorrectes, ça sera + simple pour t'aider.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 233 Messages

17 oct. 2017, 19:46

Voici donc le résultat qui donne les 2 règles qui sont utilisées en même temps :

http://htaccess.mwl.be?share=ca9019e0-3 ... 5c680dbb98

Ne fonctionne pas :

http://htaccess.mwl.be?share=ee60fcf5-a ... f8f3b3c640

Fonctionne puisque c'est "$_GET['page']" :

http://htaccess.mwl.be?share=6eca16d5-e ... ebf0b23e9f

Fonctionne sur le test mais pas en réel vu qu'il s'agit de "$_GET['page']", il n'y a pas de $_GET['compteur'] dans mon script :

http://htaccess.mwl.be?share=7d5341ec-8 ... 61c8b5922c