Après l'URL Rewriting, je vous propose de découvrir un autre moyen de gérer vos URLs en PHP sans dépendre de votre serveur: les routers (ou routeurs).
- .htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [NC,L]
- index.php
<?php
$url = '';
if(isset($_GET['url'])) {
$url = $_GET['url'];
}
if($url == '') {
require 'home.php';
} elseif(preg_match('#article-([0-9]+)#', $url, $params)) {
$idArticle = $params[1];
require 'article.php';
} else {
require '404.php';
}
/*$url = '';
if(isset($_GET['url'])) {
$url = explode('/', $_GET['url']);
}
if($url == '') {
require 'home.php';
} elseif($url[0] == 'article' AND !empty($url[1])) {
$idArticle = $url[1];
require 'article.php';
} else {
require '404.php';
}*/
- home.php
<!DOCTYPE html>
<html>
<head>
<title>Accueil</title>
</head>
<body>
Ma page d'accueil !
</body>
</html>
- article.php
<!DOCTYPE html>
<html>
<head>
<title>Article <?= $idArticle ?></title>
</head>
<body>
Mon article numero <?= $idArticle ?>
</body>
</html>
- 404.php
<!DOCTYPE html>
<html>
<head>
<title>ERREUR !</title>
</head>
<body>
Erreur 404 !
</body>
</html>
Liens utiles :
- Créer un router en PHP Orienté Objet (par Grafikart)
- Autre alternative intéressant de router en passant par la superglobale $_SERVER pour récupérer l'URL de la page
- Création d'une architecture MVC complète
Votre commentaire