URL rewriting

Eléphant du PHP | 68 Messages

13 avr. 2008, 19:01

Bonjour,
Je ne savais pas trop où posté donc j'ai mis ici.
Donc j'aimerai savoir si sur de l'URL rewriting il y a des moyens pour par exemple
J'ai une URL du type :
http://site.com/?page=accueil&mode=check&id=13

De faire une URL du genre http://site.com/accueil/check/13
Mais dans le cas où un argument serai absent disont il n'y a pas de mode = check
Que sa fasse une url du genre
ttp://site.com/accueil/13

Sans avoir à créer plusieurs lignes
SI je fais
RewriteRule ^(.*)/(.*)/([0-9]+)$ /index.php?page=$1&mode=$2&id=$3 [L]

Merci d'avance

Mammouth du PHP | 2937 Messages

13 avr. 2008, 21:51

Essaie ce .htaccess

Code : Tout sélectionner

RewriteEngine on Options +FollowSymlinks RewriteRule ^([a-z]+)/([a-z]*)/([0-9]+)$ /?page=$1&mode=$2&id=$3 [L] RewriteRule ^([a-z]+)/([0-9]+)$ /?page=$1&id=$2 [L]
En codant de la règle la plus complexe à la plus simple (ainsi on évite la plupart des conflits possibles).

Et n'oublie pas de vérifier que les liens dans le site sont bien les URLs réécrites. ;)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

13 avr. 2008, 22:04

Modération :
Afin d'obtenir plus de réponses, le sujet est déplacé dans le forum "Autre".
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 558 Messages

13 avr. 2008, 22:07

Essaie ce .htaccess

Code : Tout sélectionner

RewriteEngine on Options +FollowSymlinks RewriteRule ^([a-z]+)/([a-z]*)/([0-9]+)$ /?page=$1&mode=$2&id=$3 [L] RewriteRule ^([a-z]+)/([0-9]+)$ /?page=$1&id=$2 [L]
En codant de la règle la plus complexe à la plus simple (ainsi on évite la plupart des conflits possibles).

Et n'oublie pas de vérifier que les liens dans le site sont bien les URLs réécrites. ;)
il faut préciser "index.php" dans le rewritte.
et la lettre dans les crochet est differente si il y a une ou plusieur variable
[QSA,L] pour une et
[L] quand il y en a plusieurs

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

14 avr. 2008, 00:39

J'ai un doute... :-k

Le [L] ne doit-il pas être réservé pour la dernière ligne de règles de réécriture ? :?:

ViPHP
ViPHP | 5924 Messages

14 avr. 2008, 03:46

Il indique que on s'arrête si la règle match, donc il peut être utilisé sur plusieurs règles si elles sont exclusives…

Mammouth du PHP | 19672 Messages

14 avr. 2008, 07:17

Le [L] peut être assimilé au "break" dans un switch : si une règle correspond, on sort de la phase vérification.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

14 avr. 2008, 08:51

Merci. :oops: