Obtenha o caminho da solicitação em PHP para roteamento

Já teve a dificuldade de recuperar a URL atual de uma solicitação com PHP simples em diferentes domínios raiz ou ambientes locais (com caminhos estranhos)?

<?php

function request_path()
{
$request_uri
= explode('/', trim($_SERVER['REQUEST_URI'], '/'));
$script_name
= explode('/', trim($_SERVER['SCRIPT_NAME'], '/'));
$parts
= array_diff_assoc($request_uri, $script_name);
if (empty($parts))
{
return '/';
}
$path
= implode('/', $parts);
if (($position = strpos($path, '?')) !== FALSE)
{
$path
= substr($path, 0, $position);
}
return $path;
}

Exemplos

Recupera p / novo em coderwall.com/p/new .

Ou linguagens / PHP em github.com/languages/PHP .

Para que usar? Faça alguma rota rápida como esta:

<?php

$routes
= [
'/' => function()
{
// home page callback
},
'about-us' => ...,
'profile/edit' => ...
];

$path
= request_path();

if (isset($routes[$path]) AND is_callable($routes[$path]))
{
$routes
[$path]();
}
else
{
// show some fancy error page with nyan cat
}

.htaccess

RewriteEngine On
# RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]