8796 sujets

Développement web côté serveur, CMS

Bonjour à tous

je galère avec l'url rewriting...

j'ai des liens depuis mes pages qui donnent: ht...occasions-peugeot-207-abc1234 et que je veux faire pointer sur ht... details.php?id=abc1234

ex. www.monsite.fr/occasions-peugeot-207-abc1234
pour www.monsite.fr/details.php?id=abc1234

j'ai créé mon fichier htaccess comme ça:

RewriteEngine On
RewriteBase /
RewriteRule ^occasions-([a-z]*)-([a-z0-9]*)-([a-z0-9]*)\.php$ /details.php?id=$3 [L]

la 1ère série ne contient que des lettres (mises en minuscules en php)
la 2ème contient des lettres (aussi en minuscules) et/ou des chiffres
la 3ème, une série de 3 lettres 3 chiffres ( ex: abc1234) qui correspondent à la référence que je dois utiliser pour appeler la bonne page !

et... il n'y a rien a faire, j'ai beau trituré le htaccess dans tous les sens... ça veut pas !!!

est-ce que vous voyez une erreur qque part dans mon htaccess ?
ça fait des heures que je suis là dessus...

Merci pour vos lumières .

Eric
Modifié par Spacemarmotte (22 Sep 2010 - 14:00)
Salut,

ça ne peut pas fonctionner si tes pages ne finissent pas par .php

A tester :
RewriteRule ^occasions-([a-z]+)-([a-z0-9]+)-([a-z0-9]+)$ details.php?id=$3 [L]
Modérateur
Hello !
Heyoan a écrit :
ça ne peut pas fonctionner si tes pages ne finissent pas par .php
Ah bah si, ça peut marcher en finissant par /
Smiley langue
Salut, Smiley smile

Pas compris. Tu parles bien de ça :
Spacemarmotte a écrit :
RewriteRule ^occasions-([a-z]*)-([a-z0-9]*)-([a-z0-9]*)\.php$ /details.php?id=$3 [L]
?
Modérateur
Oui, je voulais dire que plutôt de finir la première expression par ...)\.php$ on peut terminer par ...)/$ ce qui permet de masquer l'extension de fichier.
koala64 a écrit :
Oui, je voulais dire que plutôt de finir la première expression par ...)\.php$ on peut terminer par ...)/$ ce qui permet de masquer l'extension de fichier.
Euh... toujours pas compris ! Smiley gangsta

De ce que j'en comprends ça permettrait d'utiliser des liens sans se préoccuper d'une éventuelle extension... sauf que je viens de faire le test et du coup ça ne fonctionne plus qu'avec un slash final dans l'url.
Modérateur
Heyoan a écrit :
De ce que j'en comprends ça permettrait d'utiliser des liens sans se préoccuper d'une éventuelle extension
Bah non ! Tu tapes toujours sur l'url de ton fichier php d'origine ; c'est dans sa forme réécrite qu'on ne délivre plus l'extension, ce qui permet de faire comme si tu pointais un dossier plutôt qu'un fichier.

RewriteRule ^occasions-([a-z]*)-([a-z0-9]*)-([a-z0-9]*)/$ details.php?id=$3 [L]

Modifié par koala64 (22 Sep 2010 - 17:01)
Bon... comme je suis fatigué (et un peu têtu Smiley lol ) j'ai un peu de mal à suivre donc je reprends :

1) le RewriteRule d'origine de Spacemarmotte contenait \.php$ donc je lui dis que puisque les urls qu'il utilise n'ont pas d'extension ça ne peut pas marcher.

2) toi tu dis : pour masquer l'extension il suffit d'utiliser /$

3) ... sauf que puisqu'il s'agit d'une fausse url qui va cibler un autre document (et qu'il n'y a pas de vraie redirection -301- donc qui ne sera pas modifiée dans la barre d'adresse) on peut bien mettre ce qu'on veut (pas d'extension, .php, .asp, .html, slash) et même si c'est vrai que le slash fait penser à un répertoire (avec quand même un nom à rallonge) l'extension finale est déjà masquée non ? Bien sûr on se doute que c'est de l'urlrewriting redirigé vers un script utilisant un langage serveur mais qu'est-ce que ça change ?

Pour prendre un exemple récent le dernier tuto présente une extension .html mais on sait bien que cela pointe vers un .php (on n'est pas dupes !)

PS : si je suis obtus ou que ça te saoule tu n'es pas obligé de répondre. Smiley ravi
Modifié par Heyoan (22 Sep 2010 - 17:53)