Bonjour à tous et à toutes,
Je vous explique mon problème en espérant que vous pourrez m'aider à le ressoudre.
J'ai suivi le tuto " Décomposer un site en PHP avec ob_Start " jusqu'à la aucun souci mais j'aime me compliquer les choses : p
À la fin du tuto de Grafikart on termine le .htaccess avec le code suivant :
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?p=$1 [QSA,L]
Le souci c'est que je code en ce moment un Forum et pour les catégories j'ai le lien suivant :
http://localhost/newdeltacraft/forum?categorie=Animaux
Et je voudrais pouvoir le transformer pour qu'il soit comme cela :
http://localhost/newdeltacraft/forum/Animaux
Merci a tous d'avance :)
DylanEst-ce que tu sais ce que l'.htaccess
fait ? J'en ai pas l'impression.
# démarrer le moteur de reécriture d'URL
RewriteEngine On
# si un dossier est demandé, ne pas exécuter la prochaine règle
RewriteCond %{REQUEST_FILENAME} !-d
# si un fichier est demandé, ne pas exécuter la prochaine règle
RewriteCond %{REQUEST_FILENAME} !-f
# tout rediriger vers index.php et lui donné en paramètre GET p=forum/Animaux dans ton exemple
RewriteRule ^(.*)$ index.php?p=$1 [QSA,L]
Tu devrais maintenant comprendre que tout le traitement se passe côté PHP, avec des bons vieux explode
, if
, etc...
Re bonjour,
Pourrais tu m'aider un petit peut stp car a chaque foie que je touche a ce code tous le reste plante..
define("WEBROOT", "/newdeltacraft/");
if(!isset($_GET['p'])){ $_GET['p'] = 'index'; }
if(!file_exists("content/".$_GET['p'].".php")){ $_GET['p'] = '404'; }
ob_start();
if(preg_match("#^[a-zA-Z0-9/-]+$#", $_GET['p'] )){
include "content/".$_GET['p'].".php";
}else{
header('location: 404');
}
$content = ob_get_contents();
ob_end_clean();
include 'template.php';
Merci encore de ton aide
$_GET['p']
pour la traiter, ça donnera un code plus lisible ;content/404.php
?J'ai réussi :D J'ai simplement utilisé la variable $_SERVER que j'ai explode pour récuperer l'indice 2.
Voici le code final, tu me dira ce que tu en pense :
define("WEBROOT", "/newdeltacraft/");
if(!isset($_GET['p'])){ $_GET['p'] = 'index'; }
ob_start();
if(preg_match("#^[a-zA-Z0-9/-]+$#", $_GET['p'] )){
/* Nouvelle Lignes de code */
$url = $_SERVER['REQUEST_URI'];
$newurl = explode("/", $url);
if($newurl[2] == 'forum'){
include "content/forum.php";
}else{
if(!file_exists("content/".$_GET['p'].".php")){ $_GET['p'] = '404'; }
include "content/".$_GET['p'].".php";
}
/* Fin des nouvelles lignes de code */
}else{
header('location: 404');
}
$content = ob_get_contents();
ob_end_clean();
include 'template.php';