Réécriture d'une url

Eléphant du PHP | 226 Messages

07 juin 2010, 14:51

Bonjour,

Je cherche à ce qu'une url de type

Code : Tout sélectionner

<a href="adminIndex.php?menu=prod&content=modifProd"...</a>
devienne

Code : Tout sélectionner

adminIndex.php
Pour ce faire, j'ai écris dans le fichier htaccess:

Code : Tout sélectionner

RewriteEngine on RewriteRule ^(adminIndex.php)$ adminIndex.php?menu=$1&content=$2[L]
Mais les variables envoyées par cette adresse vont être utilisées par un script php pour la construction des pages. Sinon, s'exécutera une inclusion par défaut:
switch ($menu) {
case "prod" : include('files/gestProd/prodMenu.php');
break;
...
default : include('files/gestComm/comMenu.php');
...
switch ($content) {
case "modifProd" : include('files/gestProd/editProd.php');
break;
default : include('files/gestComm/gestionCom.php');
}
Actuellement, non seulement lorsque je clique sur le lien, je n'ai pas de réécriture du lien, mais en plus, le redirection ne s'effectue plus. Pourquoi ?
merci,
«Le matin, quand il t’en coûte de te réveiller, que cette pensée te soit présente: c’est pour faire œuvre d’homme que je m’éveille.»
Marc Aurèle.

ViPHP
ViPHP | 5462 Messages

07 juin 2010, 14:54

hello, ca va pas parce que nul part tu lui donnera les valeurs avec adminIndex.php
et en faisant ^(adminIndex.php)$ adminIndex.php?menu=$1&content=$2
y'a aucun groupe 2 puisque la seul groupe c'est "adminIndex.php"

ca donnerai
adminIndex.php?menu=adminIndex.php&content=?????????

Eléphant du PHP | 226 Messages

07 juin 2010, 15:34

Je ne suis pas certain d'avoir compris ce que tu as écris (Déjà que je suis pas sûr d'avoir totalement pigé la documentation concernant l'url rewriting...)
Tu veux dire que je dois spécifier explicitement le contenu des variables dans l'url d'arrivée:

Code : Tout sélectionner

RewriteRule ^(adminIndex.php)$ adminIndex.php?menu=prod&content=modifProd [L]
merci,

ViPHP
ViPHP | 5462 Messages

07 juin 2010, 15:41

non mais elle doivent exister, l'url rewiting va convertir une adresse en une autre

par exemple :
adminIndex-prod-modifProd

deviendra
adminIndex.php?menu=prod&content=modifProd

(et non l'inverse)

dans ton htaccess tu aurais
RewriteRule ^(adminIndex-(\w+)-(\w+))$ adminIndex.php?menu=$1&content=$2 [L]

Eléphant du PHP | 226 Messages

07 juin 2010, 16:51

non mais elle doivent exister
En fait, ce que tu essayes de me dire, c'est que je dois obligatoirement retrouver les mêmes données de part et d'autre de la règle pour que cela puisse opérer (?)
J'ai repris ton exemple (désolé, mais je crois que tu vas faire prof cet après-midi. Enfin, si tu veux bien :wink: ) que j'ai copié dans un nouveau fichier basique:
<body>
      <a href="test.php?menu=prod&content=modifProd">Gestion des produits</a>
</body>
et ta règle htaccess:

Code : Tout sélectionner

RewriteRule ^(test-(\w+)-(\w+))$ test.php?menu=$1&content=$2 [L]
Mais quand je clique sur le lien, le navigateur me revoie comme adresse:

Code : Tout sélectionner

http://localhost/phpLearning/OC2/test.php?menu=prod&content=modifProd
Ce n'est pas l'url escomptée...
«Le matin, quand il t’en coûte de te réveiller, que cette pensée te soit présente: c’est pour faire œuvre d’homme que je m’éveille.»
Marc Aurèle.

ViPHP
ViPHP | 5462 Messages

07 juin 2010, 16:54

dans ton html c'est
<a href="test-prod-modifProd">Gestion des produits</a>
la réécriture ca réécris pas l'adresse du navigateur

Eléphant du PHP | 226 Messages

08 juin 2010, 09:36

Ok, en fait, je pensais que cette réécriture se faisait automatiquement lorsque l'on cliquait sur une interaction. C'est nettement plus clair à présent.
Merci beaucoup.
«Le matin, quand il t’en coûte de te réveiller, que cette pensée te soit présente: c’est pour faire œuvre d’homme que je m’éveille.»
Marc Aurèle.