Bonjour,

Je reste bloqué dans la récupérération de la variable $_GET'p'].
Le fichier .htaccess
RewriteEngine On
RewriteRule ^([a-zA-Z0-9-\_\/]*)$ index.php?p=$1

Le fichier index.php

define("WEBROOT", str_replace("index.php", '', $_SERVER'SCRIPT_NAME']));
define("ROOT", str_replace("index.php", '', $_SERVER'SCRIPT_FILENAME']));
require_once ROOT . 'core/Modele.php';
require_once ROOT . 'core/Controleur.php';

if (isset($_GET'p'])) {
$param = explode('/',$_GET'p']);
print_r($param);
}

l'URL du site : http://localhost/cinegestion/index.php?p=index

Voici ce que j'obtiens à l'affichage
Array ( [0] => index )

Je ne récupère pas les valeurs suivantes :
Array
(
[0] => cinegestion
[1] => index
)

Merci d'avance.
Sophonie.

8 réponses


Doubrovski
Réponse acceptée

"l'URL du site : http://localhost/cinegestion/index.php?p=index"
Donc ton fichier index.php est placé dans un dossier "cinegestion" dans wamp ?

Pour récupérer ça :

Array
(
[0] => cinegestion
[1] => index
)

En supposant que tes fichiers index.php et .htacces sont placés dans le dossier localhost/cinegestion/

Il faut taper l'url :
http://localhost/cinegestion/cinegestion/index

"http://localhost/cinegestion/" est le dossier racine de ton site.
"cinegestion/index" sont les paramètres (cinegestion= controller, index=action).
la fonction explode va ensuite séparer cinegestion et index grâce au slash.

Tu peux donc taper http://localhost/cinegestion/cinegestion/index
qui correspond après redirection à http://localhost/cinegestion/index.php?p=cinegestion/index
Le fichier htaccess redirige en paramètre p= de index.php tout ce qui est tapé comme url <u>à partir</u> du dossier ou est placé index.php et .htaccess (la racine du site en général).

A+

Dans ton fichier .htaccess essaye plutôt de mettre cette condition :

RewriteEngine On
RewriteRule ^(.*)$ index.php?p=$1 [L]
sophonie
Auteur

Malgré cette modification, je n'obtiens toujours pas le résultat escompté.

Je pense avoir trouvé. Pourquoi mets-tu dans "http://localhost/cinegestion/index.php?p=index" un ?p=index. En faisant cela tu redéfinis ta variable $_GET"p"].

Essaye donc cette URL : http://localhost/cinegestion/index.php

sophonie
Auteur

Cela ne marche toujours pas!

tu arrives bien sur la page index.php
si oui quel est le contenu de $_GET"p"] avec cette url http://localhost/cinegestion/index.php

sophonie
Auteur

Bonjour,

Je me rapproche de vous à nouveau concernant mon problème d'url rewriting. En me penchant sur le problème, j'ai constaté (et grafikart ne le dit pas dans son tutoriel) qu'il faut au préalable modifier le fichier de configuration httpd.conf d'Apache.
Il faut ajouter dans la première directive <Directory/></Directory> la valeur AllowOverride All pour permettre que le contenu du fichier .htaccess conçut soit pris en compte.

Cepedendant en utilisant l'expression régulière de la directive RewriteRule donnée dans le tutoriel, je n'obtiens pas
Array ( [p] => cinegestion/index ) mais uniquement index.

Merci d'avance.
Sophonie.

sophonie
Auteur

Merci pour ta réponse Doubrovski, le problème est résolu.