Tuto PHP - Créer un router

PrimFX Boris ('PrimFX') Le 12 février 2017

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 :

A propos de l'auteur

PrimFX
Boris ('PrimFX')

Je m'appelle Boris, j'ai 22 ans et je suis passionné d'informatique. Suite à mes études (Licence Informatique puis MSc Computer Science au Trinity College Dublin), je gère l'entreprise Single Quote co-fondée en 2019 et je profite de mon temps libre pour partager ma passion à travers des vidéos & articles 😃

Votre commentaire

Vous devez être connecté pour poster un commentaire. Se connecter ou Créer un compte

Commentaires 1

  • arthurvoirin Le 17 février, à 11:48 | Répondre

    Bonjour
    Super tuto !
    J'ai cependant une question.
    J'ai pu suivre à la lettre tes explications, tout fonctionne d'ailleurs parfaitement ! Cependant, étant donnée que l'url entière est stockée dans la variable $url, puis explode par les '/' qu'elle comporte; il est impossible d'utiliser d'autres variables GET dans l'url.
    Exemple : impossible de faire ==> monsite.fr/articles?color=rouge&categorie=cheval...
    Comment puis-je alors faire pour maintenir ce principe dans les urls tout en gardant les fonctionnalités de GET ?
    Merci a vous et bonne journée :)