Roteamento de URL personalizado com PHP e regex
Eu estou tentando criar um roteamento de URL muito simples, e meu processo de pensamento foi este:
Primeiro verifique todos os URLs estáticosEm seguida, verifique os URLs do banco de dadosEm seguida, retorne 404 se não existirAs URLs estáticas são fáceis de fazer, é claro, mas estou tentando descobrir a melhor maneira de fazer as dinâmicas. Eu preferiria não ter que definir um prefixo estático, apesar de saber que isso tornaria isso muito mais fácil de codificar.
Isto é o que eu tenho atualmente:
$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
}
Meu problema é que, se eu tiver o URI "/ register", ele corresponderá à segunda instrução elseif e à instrução regex. Mas eu quero evitar especificamente excluir cada URL estática da instrução regex, como esta:
// should match just "/some-unique-url-here"
elseif ((preg_match("/([\/A-Za-z0-9\-]+)/",$requestURL)) &&
($requestURL !== '/register') &&
($requestURL !== '/')) {
// query database for that url variable
}
Qual é a maneira mais fácil de resolver este problema? Eu provavelmente terei 15-20 URLs estáticos, então especificamente excluir todos eles seria muito desajeitado.