Tartalomjegyzék

< PHP

PHP routing

Egyszerű routing

Az apache számára szükséges:

.htaccess
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
index.php
<?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';		
}
views/home.php
<h1>Főoldal</h1>
views/about.php
<h1>Névjegy</h1>
views/contact.php
<h1>Kapcsolat</h1>
views/404.php
<h1>Az oldal nem található!</h1>

Az explode

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

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");

Alkönyvtárhoz .htaccess

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

Források