Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Comment fonctionne le routage ?

Prerequis

Il faut commencer par définir un virtualhost dans phpmyadmin qui sera le point d'entrée du site
(Au lieu d'avoir le virtualhost à /www, on le met à /www/public)
Par exemple:

  • Nom du virtualhost: Labo2
  • Chemin absolu vers le virtualhost: d:/proforma/labo/labo 2/www/public

Signifie que lorsqu'on entre l'url http://Labo2/index.php on accède au fichier d:/proforma/labo/labo 2/www/public/index.php

Préparation

1. On crée un fichier .htaccess dans le chemin absolu du virtualhost

Dans l'exemple, ça donnerait d:/proforma/labo/labo 2/www/public/.htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]

Ce fichier permet:

  1. D'activer les redirections d'un endroit qui mène à un autre
  2. Si on ne trouve pas le fichier
  3. Si on ne trouve pas le dossier
  4. On redirige l'utilisateur à index.php

2. On crée le fichier index.php à côté de .htaccess

Maintenant qu'on est redirigé à index.php il faut qu'on s'occupe de choisir quelle page afficher

<?php
define('WWW_ROOT', dirname(__DIR__)); //Chemin absolu de notre projet
define('PAGES_PATH', WWW_ROOT . '\\pages\\'); //Chemin absolu des pages de notre projet

define('RELATIVE_URL', rtrim(dirname($_SERVER['SCRIPT_NAME']), '\\')); //Chemin relatif, à partir du site, utilisé par HTML/CSS

//On récupère et nettoie l'url entrée dans le navigateur
$uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
//Retrouve le chemin relatif qui correspond au chemin absolu du projet
$route = str_replace(RELATIVE_URL, '', $uri);

//Endroit où mettre toutes les redirections que l'on veut
//"url" mène à "page"
$routes = [
    '/' => 'home.php',
    '' => 'home.php',
    '/index' => 'home.php',
    '/page1' => 'page1.php'
  ];
  //Si l'url correspond à une des urls de redirection, on appelle la page
  if (array_key_exists($route, $routes))
  {
    $title = 'Adops';
    require PAGES_PATH . $routes[$route];
}
else
{
http_response_code(404);
echo "404 - Page not found.<br/>
<a href=\"/\">Return Home</a>";
}

Liens

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages