Перенаправление URL-адресов в PHP вместо конфигурации сервера

Я ищу очень легкую структуру маршрутизации (чтобы пойти с php-skel ).

Первое, что я хотел бы исследовать, – это указать правила перезаписи в php-файле (обработчик «не найден») аналогично тому, как это указано в конфигурациях сервера.

Вот потенциальный пример (но я хочу знать, какие рамки предоставляют что-то такое легкое):

Файл route.php:

route('application/api', '/api/index.php'); route('application', '/application/index.php'); 

Файл appplication / index.php:

 route(':module/:action', function($module, $action) { include(__DIR__ . '/' . $module . '/' . $action . '.php'); }); 

Каковы облегченные рамки / функции или методы маршрутизации?

Способ php:

http://example.com/index.php/controller/action/variables

 $routing = explode("/" ,$_SERVER['PATH_INFO']); $controller = $routing[1]; $action = $routing[2]; $variables = $routing[3]; 

PHP имеет функцию urse parse, которую можно легко использовать для маршрутизации. Затем вы можете вызвать explode () в части пути, которая возвращается для получения массива компонентов url.

PHP не может переписывать URL-адреса способом mod_rewrite, он может перенаправлять только на другие страницы, что в два раза больше количества обращений на вашем сервере (1 ударил по скрипту php, 2-го попадания на цель перенаправления).

Тем не менее, вы можете заставить скрипт PHP динамически загружать содержимое «перенаправленных» страниц:

 switch($_GET['page']) { case 1: include('page1.php'); break; case 2: include('page2.php'); break; default: include('page1.php'); } в switch($_GET['page']) { case 1: include('page1.php'); break; case 2: include('page2.php'); break; default: include('page1.php'); } в switch($_GET['page']) { case 1: include('page1.php'); break; case 2: include('page2.php'); break; default: include('page1.php'); } в switch($_GET['page']) { case 1: include('page1.php'); break; case 2: include('page2.php'); break; default: include('page1.php'); } 

это будет довольно прозрачным для пользователя, и вы получите в основном тот же эффект, что и mod_rewrite. С соответствующими параметрами query и path_info вы можете довольно хорошо продублировать mod_write «pretty» url.