Az apache számára szükséges:
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.+)$ index.php [QSA,L]
A működéshez szükség van az Apache-ban
AllowOverride FileInfo
<?php $requestUri = explode('?', $_SERVER['REQUEST_URI'], 2); switch($requestUri[0]) { case '/': require 'views/home.php'; break; case '/about': require 'views/about.php'; break; case '/contact': require 'views/contact.php'; break; default: header('HTTP/1.0 404 Not Found'); require 'views/404.php'; }
<h1>Főoldal</h1>
<h1>Névjegy</h1>
<h1>Kapcsolat</h1>
<h1>Az oldal nem található!</h1>
Az explode akkor hasznos, ha vannak paraméterek, amiket szeretnénk leválasztani.
A header('HTTP/1.0 404 Not Found') utasításnak látszólag nincs hatása. De egy curl paranccsal megtekintve:
curl -D /dev/stdout http://localhost:8000/vmi
HTTP/1.0 404 Not Found Host: localhost:8000 Connection: close X-Powered-By: PHP/7.0.33-0+deb9u3 Content-type: text/html; charset=UTF-8 <h1>Nincs ilyen oldal</h1>
Az includes könyvtár a php függvények tárhelye, amelyet olyan alkönyvtárban is használhatunk, amelyekben külön routing van. Ilyen esetben nem mindegy, hogyan kezdődik egy include(), include_once() függvény paramétere.
Ajánlott például:
include_once($_SERVER['DOCUMENT_ROOT']."/mysql.php");
RewriteEngine On RewriteBase /info/ RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.+)$ /info/index.php [QSA,L]
Alkönyvtár esetén fejlesszünk így:
projekt01 |-.git/ |-database/ |-draft/ |-projekt01/ | |-css/ | |-js/ | |-includes/ | |-libs/ | |-templates/ | |-views/ | `-index.php | |-.gitignore |-changelog.txt `-readme.txt
mkdir projekt01 cd projekt01 mkdir projekt01 php -S localhost:8000 -t .
A CSS és JavaScript fájlokra így hivatkozzunk:
projekt01/css/style.css projekt01/js/script.js