Salut à tous,

Voilà, je suis en train de travailler sur les UrlRewriting et je bloque au moment de faire passer plusieurs variables par l'url.

J'ai suivi le tuto "Décomposer un site" et j'ai donc un structure simple ou "index.php" s'occupe de récupérer la variable $_GET et d'inclure la page correspondante, exactement comme dans la vidéo.

La ou je plante, c'est au moment de faire passer une deuxième variable.

Exemple concret :

lorsque je tape l'url "webroot/blog" je suis bien redirigé vers "webroot/index.php?p=blog"

Ce que je voudrais, c'est faire passer une autre variable qui pointerait vers "webroot/index.php?p=article&id=1" (ou id serait l'id d'une news par exemple.

Est-ce que vous pourriez me donner un petit coup de main svp ?

Je vous met quand même mon .htaccess mais c'est strictement le même que dans la vidéo :

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?p=$1 [QSA,L]

4 réponses


Bonjour,
Peut-être essayer une url du style webroot/blog/2
ensuite décomposer cette url sous forme de tableau de valeurs et récupérer la deuxième valeur (2) et donc avoir un htaccess :
RewriteRule ^(.*)$ index.php?p=$1&id=$2 [QSA,L]

Natà
Auteur

Salut totof, oui j'ai oublié de préciser que c'est effectivement ce format d'URL que je voudrais.

Mais ta solution ne fonctionne pas :/.

Si j'ai bien compris le fonctionnement de l'url rewriting je dois mettre d'abord le format de l'url désiré puis la page originale vers laquelle doit pointer ce lien.

Partant de la, j'ai essayé la première chose qui m'est venue à l'esprit :
Sachant que l'url désirée est article?id=1 et que celle-ci entrée de cette façon dans ma barre d'adresse fonctionne très bien, j'ai mis ola règle suivante :

RewriteRule ^article/([0-9]+)$ article?id=$1

Et bah fatalement ça ne fonctionne pas, mais je ne comprends pas pourquoi...

tu met

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

et dans index.php

$url = expolode('/', $_GET'url']);

quant tu va taper webroot/blog/2 t'aura la variable url qui contient sa
$url[0] : blog,
$url[1] : 2

Natà
Auteur

Salut bhamzapro,

Heu il doit y avoir un soucis;

Lorsque je tape webroot/blog/2 je suis redirigé vers l'accueil quelle que soit l'adresse que j'indique... (Et j'ai bien pris soin de corriger explode :p )