Niestandardowy routing URL z PHP i wyrażeń regularnych

Próbuję utworzyć bardzo prosty routing URL, a mój proces myślowy był następujący:

Najpierw sprawdź wszystkie statyczne adresy URLNastępnie sprawdź adresy URL bazy danychNastępnie zwróć 404, jeśli nie istnieje

Statyczne adresy URL są oczywiście łatwe do zrobienia, ale staram się znaleźć najlepszy sposób na dynamiczne. Wolałbym nie ustawiać statycznego prefiksu, mimo że wiem, że znacznie ułatwiłoby to kodowanie.

Właśnie to mam obecnie:

$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
}

Moim problemem jest to, że jeśli mam identyfikator URI „/ register”, będzie on pasował do drugiego wyrażenia inif oraz instrukcji wyrażenia regularnego. Ale chcę uniknąć konieczności wykluczania każdego statycznego adresu URL z instrukcji regex, takiej jak ta:

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

Jaki jest najprostszy sposób rozwiązania tego problemu? Prawdopodobnie będę miał 15-20 statycznych adresów URL, więc wykluczenie ich wszystkich byłoby bardzo przykre.

questionAnswers(1)

yourAnswerToTheQuestion