Page 1 sur 1

[réglé] Apache & Mod_rewrite : je comprends pas :)

Publié : 01 sept. 2006, 00:54
par Thomas
Bonjour,

J'ai des URLs du type :
http://site.com/carnet/index/19-apercu
que je voudrais transformer en :
http://site.com/carnet/19-apercu

J'ai donc mis dans mon .htaccess situé à la racine du site :

Code : Tout sélectionner

RewriteRule ^carnet/(.*) carnet/index/$1 [L]
ou encore

Code : Tout sélectionner

RewriteRule ^carnet/(.*) carnet/index.php/$1 [L]
Mais j'ai une erreur 500 à chaque fois :|

Pourtant si je met :

Code : Tout sélectionner

RewriteRule ^carnet/(.*) carnet/index/ [L]
Toute mes tentatives d'accès à http://site.com/carnet/** aboutissent bien à http://site.com/carnet/index/

Qu'est-ce qui cloche selon vous ? :(

Merci

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1b2) Gecko/20060821 Firefox/2.0b2

Publié : 01 sept. 2006, 10:57
par Asumbaa
Salut,

Quelques idées en vrac, sans réelle certitude...

1/ Tu as bien mis $1 (chiffre un) et pas $l (petit L) ?
2/ Attention à ne pas embarquer toutes tes adresses dans ta rewrite rule. Là si quelqu'un essaye d'accéder avec l'ancienne adresse il va se faire rewriter et tomber nulle part. Il faudrait spécifier un peu...
3/ Zut je crois que j'avais une troième idée mais elle m'a échappé... Je repasserai :p

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6

Publié : 01 sept. 2006, 14:04
par Thomas
Merci mais le problème venait du fait qu'on ne peux pas rewriter "la même URL". J'avais pas le droit de remettre "carnet" dans la deuxième partie :
RewriteRule ^carnet/(.*) carnet/index/$1 [L]
Le solution est soit de renommer le dossier, soit de mettre le .htaccess dans ce dossier et agir en conséquence ;)

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1b2) Gecko/20060821 Firefox/2.0b2

Publié : 01 sept. 2006, 19:57
par PsyDk
Sinon y'a le mode Multviews qui est bien sympa et que j'utilise pour tous les sites que je fais.

Tu mets

Code : Tout sélectionner

Options +MultiViews
en haut de ton .htacess

Et tu utilises

Code : Tout sélectionner

$_SERVER['PATH_INFO']
pour récupérer tout ce qui suit après le nom de ta page.

http://example.com/carnet/onk/plop renverra sur carnet.php et tu auras « /onk/plop » dans $_SERVER['PATH_INFO']

C'est moins lourd qu'activer l'url rewriting.

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6

Publié : 01 sept. 2006, 22:45
par Benoit
Ah, intéressant. Je pensais qu'il fallait un fichier blabla.php au lieu d'index.php pour que ça fonctionne.

Publié : 02 sept. 2006, 09:10
par PsyDk
Oops, au temps pour moi. Benoit, tu as raison, il faudrait écrire example.com/index/blabla/onk. Je corrige mon message.

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6