public static function start() { //если сайт отключен if (SConfig::SITE_DISABLED) { FileSys::includeFile(SITE_ROOT . '/client/pages/site_disabled.php'); exit; } //в переменную $request_url заносим url без GET-параметров $request_url = explode('?', $_SERVER['REQUEST_URI'])[0]; //проверяем url if (!preg_match('/^\\/(([-a-z0-9_]+\\/)*[-a-z0-9_]+\\.html)?(\\?.*)?$/', $request_url)) { Router::set404(); } Request::setOriginalUrl($request_url); $db = (new Db())->setTable('url_redirects'); //если у страницы есть новый адрес - перенаправляем, чтобы избежать дублей страниц if ($ou = $db->getOne('SELECT `old_url` FROM # WHERE new_url=?s AND type="I"', $request_url)) { Router::redirect($ou); } //проверяем, есть ли редиректы $r = $db->getRow('SELECT `new_url`,`type`,`comment` FROM # WHERE old_url=?s', $request_url); if ($r) { //если редирект внутренний if ($r[1] === 'I') { $request_url = $r[0]; } elseif ($r[1] === 'E') { Router::redirect($r[0]); } } //получаем параметры пункта меню (если есть) $item = $db->getRow('SELECT * FROM ##menu_items WHERE `item_url`=?s', [Request::getOriginalUrl()], MYSQLI_ASSOC); if ($item) { if ($item['params']) { $item['params'] = Json::decode($item['params']); } Request::setItemParams($item); } Request::setRealUrl($request_url); Request::setUrlSegments(explode('/', substr($request_url, 1, -5))); //запускаем вывод страницы Document::generate(); }