Masz szczęście ... pisałem ostatnio coś na szybko takiego:
<?php
//pobranie wartości z URL'a
$page = $_GET['url'];
//Dodanie rozszerzenia .php
$page_ext = $page.'.php';
// Sprawdzanie czy w URL'u została przekazana jakaś wartość (można zamiast tego już
//w if w pirwszym warunku wpisać !$_GET['url] - będzie to samo
//Sprawdzanie czy taki plik istnieje na serwerze. Zwraca FALSE jeśli nie, zwraca T
RUE jeśli tak
//Jesli pliki które bedą dołączanie znajdują się w innym katalogu to należy zmieni
ć na
//@file_exists(Katalog/$page_ext);
//Zaczynamy sprawdzać
//Pierwszy warunek sprawdza, czy zmienna została przekazana, jeśli nie ładuje domy
ślny plik
//który należy oczywiście utworzyć - to ten plik który będzie dołączany gdy ktoś wejdzie przez
//adres twojastrona.pl lub twojastrona.pl/index.php
//Drugi warunek sprawdza czy plik istnieje. Jesli nie - też dołącza plik domyślny.
//Zamiast pliku domyślnego możesz załadować error.php w którym dasz info, że nie m
a takiego adresu
//Jeśli żaden z tych warunków nie wystąpi, ładuje rządaną stronę
//WAŻNE - jeśli strony są w jakimś katalogu to w każdym z include należy go dopisać
if ($case == 1) {include('start.php');}
else {
if($fileExists==FALSE) {
include('start.php');
} else {
include($page_ext);}
}
?>
Zamiast include może być dowolna inna instrukcja, na przykład pobranie danych z bazy danych - wtedy jednak odpada sprawdzanie fileExists i dodawanie rozszerzenia

Twój parametr ?url= posłuży to WHERE przy zapytaniu MySQL