Há muito tempo atrás, para evitar ataques via URL, comecei a usar a função $_SERVER['REQUEST_URI'], do PHP. Criava um link <a href=”?home”>Home</a> e colocava no meu config.php o seguinte:

<?
$url = $_SERVER['REQUEST_URI'];
if($url == "home"){
$pg = "pages/home.php";
}else{
$pg = "pages/erro.php";
}
?>

Ai sempre que eu adicionava uma página, tinha que adicionar algumas linhas neste arquivo também. Então criei a seguinte função:

<?
function url($uri){
if($uri == "/"){ $uri = "/?home"; }
$uri = explode("?",$uri);
$uri = explode("&",$uri[1]);
$uri = $uri[0];
$arquivo = "pages/".$uri.".php";
if(is_file($arquivo)){
$path = $arquivo;
}else{
$path = "pages/erro.php";
}
return $path;
}
?>

Ai no seu index.php, basta escrever o seguinte:

<?
include_once("config.php"); //onde está nossa função
$path = url($_SERVER['REQUEST_URI']); //verifica se o arquivo existe ou não
include($path); //inclui o arquivo ou o arquivo de erro
?>

Esta é uma função simples e pobre (hehe), atualmente serve apenas para ficar bonitinho, porque continua inseguro. Mas pretendo melhorá-la e incluí-la numa biblioteca para PHP que estou fazendo e que irei publicá-la quando estiver mais ou menos pronta, para o pessoal baixar, usar, melhorar, enfim. Nome já tem! Será chamada crisLib.php em homenagem a minha noiva, Cris. Em uma biblioteca de funções, geralmente, se encontra tudo o que se precisa, assim como a Cris, que tem tudo o que eu preciso! (^^)

Abraços!