Пользовательская маршрутизация URL с помощью PHP и регулярных выражений
Я пытаюсь создать очень простую маршрутизацию URL, и мой мыслительный процесс был таким:
Сначала проверьте все статические URLЗатем проверьте URL базы данныхЗатем верните 404, если ни один не существуетКонечно, статические URL-адреса просты, но я пытаюсь найти лучший способ создания динамических. Я бы предпочел не устанавливать статический префикс, несмотря на то, что знал, что это значительно облегчит кодирование.
Вот что у меня сейчас есть:
$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
}
Моя проблема в том, что если у меня есть URI "/ register", он будет соответствовать второму оператору elseif, а также выражению regex. Но я хочу избежать необходимости специально исключать каждый статический URL из выражения регулярного выражения, например:
// should match just "/some-unique-url-here"
elseif ((preg_match("/([\/A-Za-z0-9\-]+)/",$requestURL)) &&
($requestURL !== '/register') &&
($requestURL !== '/')) {
// query database for that url variable
}
Какой самый простой способ решить эту проблему? Вероятно, у меня будет 15-20 статических URL, поэтому исключение всех из них будет очень неуклюжим.