Mod_Rewrite

ViPHP
ViPHP | 5462 Messages

19 juin 2010, 19:41

ca marche aussi, sur quoi tu bloques ?

Eléphant du PHP | 214 Messages

19 juin 2010, 19:55

ca marche aussi, sur quoi tu bloques ?
Je me bloque au 4eme parametres, en mettant print_r($_GET), me donne le 3eme et le 4eme ensemble

Array ( [rub] => sport[srub] => foot [cat] => club-joueur )

Alors que le lien est: sport-foot-club-joueur
RewriteRule ^(\w+)\.html$ index.php?rub=$1 [L]
RewriteRule ^(\w+)-(\w+)\.html$ index.php?rub=$1&srub=$2 [L]
RewriteRule ^(\w+)-(\w+)-([\w\._-]+)\.html$ index.php?rub=$1&srub=$2&cat=$3 [L]
RewriteRule ^(\w+)-(\w+)-([\w\._-])-([\w\._-]+)\.html$ index.php?rub=$1&srub=$2&cat=$3&scat=$4 [L]

ViPHP
ViPHP | 5462 Messages

19 juin 2010, 20:51

tu refais la même erreur qui au début
ca va pas ca : ([\w\._-]+)

deja _ est inclus dans \w donc pas besion de la mettre et ensuite tu rajoutes des -, comment veux tu qu'il fasse la difference en un - qui separer les arguments et un - dans ton argument ?
si t'as absolument besoin de tiret dans tes arguments prendre un autre séparateur une virgule par exemple ou un slash

Eléphant du PHP | 214 Messages

19 juin 2010, 21:16

tu refais la même erreur qui au début
ca va pas ca : ([\w\._-]+)

deja _ est inclus dans \w donc pas besion de la mettre et ensuite tu rajoutes des -, comment veux tu qu'il fasse la difference en un - qui separer les arguments et un - dans ton argument ?
si t'as absolument besoin de tiret dans tes arguments prendre un autre séparateur une virgule par exemple ou un slash
Je les ai mis tous comme ca: (\w+), et ca marche, je vais essayer de la compliquer un peu

Eléphant du PHP | 170 Messages

21 juin 2010, 05:32

Bonjour,

\w est une classe de caractères utilisée avec les expressions régulières PCRE.

Sauf si ça a changé depuis, RewriteRule ne connait que les expressions régulières POSIX.

donc => [A-Za-z0-9_] et pas \w

ViPHP
ViPHP | 5462 Messages

21 juin 2010, 10:28

Bonjour,

\w est une classe de caractères utilisée avec les expressions régulières PCRE.

Sauf si ça a changé depuis, RewriteRule ne connait que les expressions régulières POSIX.

donc => [A-Za-z0-9_] et pas \w
c'est mis en place depuis la version 2.0 (donc depuis un peu plus de 8 ans) :wink:

Eléphant du PHP | 214 Messages

27 juin 2010, 11:02

Et si par exemple j'ai un lien du type:
index.php?rub=rub1&srub=srub1&page=1
et un autre lien du type:
index.php?rub=rub1&srub=srub1&id=1

le fichier htaccess prend en consideration le premier lien, parce qu'ils ont la meme forme d'ecriture

ViPHP
ViPHP | 5462 Messages

27 juin 2010, 13:12

Et si par exemple j'ai un lien du type:
index.php?rub=rub1&srub=srub1&page=1
et un autre lien du type:
index.php?rub=rub1&srub=srub1&id=1

le fichier htaccess prend en consideration le premier lien, parce qu'ils ont la meme forme d'ecriture
oui, au niveau de ta conception tu peux faire ca
rub1-srub1-page-1 ou rub1-srub1-id-1

"page" et "id" seront un group de ton regexp

^(\w+)-(\w+)-(\w+)-(\w+).html$ index.php?rub=$1&srub=$2&$3=$4

Eléphant du PHP | 214 Messages

27 juin 2010, 18:02

oui, au niveau de ta conception tu peux faire ca
rub1-srub1-page-1 ou rub1-srub1-id-1

"page" et "id" seront un group de ton regexp

^(\w+)-(\w+)-(\w+)-(\w+).html$ index.php?rub=$1&srub=$2&$3=$4
ca me donne le resultat de la page srub:
RewriteRule ^(\w+)-(\w+)-(\w+)-(\w+)\.html$ index.php?rub=$1&srub=$2&$3=$4 [L]

ViPHP
ViPHP | 5462 Messages

28 juin 2010, 11:45

y'a ta mis juste cette ligne la ou ta laissé les autres ?

Eléphant du PHP | 214 Messages

28 juin 2010, 14:16

y'a ta mis juste cette ligne la ou ta laissé les autres ?
voila mon code:
RewriteRule ^(\w+)-(\w+)-(\w+)\.html$ index.php?rub=$1&srub=$2&cat=3&id=$4 [L]
RewriteRule ^(\w+)-(\w+)-(\w+)\.html$ index.php?rub=$1&srub=$2&cat=$3&page=$4 [L]
RewriteRule ^(\w+)-(\w+)-(\w+)-(\w+)\.html$ index.php?rub=$1&srub=$2&$3=$4 [L]

Eléphant du PHP | 214 Messages

28 juin 2010, 21:22

Et en testant j'ai commis une betise, j'ai utilise:
RewriteRule ^(\w+)-(\w+)-(\w+)\.html$ index.php?rub=$1&srub=$2&cat=$3 [R=301, L]
RewriteRule ^(\w+)-(\w+)-(\w+)\.html$ index.php?rub=$1&srub=$2&path=$3 [L]

Alors maintenant j'obtiens le chemin de ma page:

http://localhost/D:/monsite/xampp/htdoc ... s&cat=Doc1

Eléphant du PHP | 214 Messages

29 juin 2010, 21:06

Et en testant j'ai commis une betise, j'ai utilise:
RewriteRule ^(\w+)-(\w+)-(\w+)\.html$ index.php?rub=$1&srub=$2&cat=$3 [R=301, L]
RewriteRule ^(\w+)-(\w+)-(\w+)\.html$ index.php?rub=$1&srub=$2&path=$3 [L]

Alors maintenant j'obtiens le chemin de ma page:

http://localhost/D:/monsite/xampp/htdoc ... s&cat=Doc1
Ja'i rectifie cette erreur, il me reste a differencier entre id et page dans ce code:
RewriteRule ^(\w+)-(\w+)-(\w+)\.html$ index.php?rub=$1&srub=$2&cat=3&id=$4 [L]
RewriteRule ^(\w+)-(\w+)-(\w+)\.html$ index.php?rub=$1&srub=$2&cat=$3&page=$4 [L]

ViPHP
ViPHP | 5462 Messages

01 juil. 2010, 00:32

faut faire une adresse type

machine-truc-id-5
machine-truc-page-2

Eléphant du PHP | 214 Messages

01 juil. 2010, 19:18

faut faire une adresse type

machine-truc-id-5
machine-truc-page-2
comme ca?
RewriteRule ^(\w+)-(\w+)-(id)-(\w+)\.html$ index.php?rub=$1&srub=$2&cat=3&-id-&id=$4 [L]