Enrutamiento de URL personalizado con PHP y expresiones regulares

Estoy tratando de crear un enrutamiento de URL muy simple, y mi proceso de pensamiento fue el siguiente:

Primero revisa todas las URL estáticasLuego verifique las URL de la base de datosLuego devuelve 404 si no existe

Las URL estáticas son fáciles de hacer, por supuesto, pero estoy tratando de descubrir la mejor manera de hacer las dinámicas. Preferiría no tener que establecer un prefijo estático, a pesar de saber que haría esto mucho más fácil de codificar.

Esto es lo que tengo actualmente:

$requestURL = $_SERVER['REQUEST_URI'];

if ($requestURL == '/') {
    // do stuff for the homepage
}

elseif ($requestURL == '/register') {
    // do stuff for registration
}

// should match just "/some-unique-url-here"
elseif (preg_match("/([\/A-Za-z0-9\-]+)/",$requestURL)) { 
    // query database for that url variable
}

// should match "/some-unique-url/and-another-unique-url"
elseif (preg_match("(^\/[A-Za-z0-9\-]+\/[A-Za-z0-9\-]+)/",$requestURL)) {
    // query database for first and second variable
}

else {
    // 404 stuff
}

Mi problema es que si tengo URI "/ register", coincidirá con la segunda instrucción elseif, así como con la declaración de expresiones regulares. Pero quiero evitar tener que excluir específicamente cada URL estática de la declaración de expresiones regulares, como esto:

// should match just "/some-unique-url-here"
elseif ((preg_match("/([\/A-Za-z0-9\-]+)/",$requestURL)) &&
    ($requestURL !== '/register') &&
    ($requestURL !== '/')) { 
    // query database for that url variable
}

¿Cuál es la forma más fácil de resolver este problema? Probablemente tendré como 15-20 URL estáticas, por lo que excluirlos específicamente sería muy torpe.

Respuestas a la pregunta(1)

Su respuesta a la pregunta