Чтобы понять, что делает маршрутизатор, вы должны сначала понять, что такое механизм перезаписи. Из статьи Википедии (выделено мое):
Механизм перезаписи - это программное обеспечение, которое изменяет внешний вид веб-URL (перезапись URL-адреса). Перезаписанные URL-адреса (иногда называемые короткими, причудливыми или дружественными для поисковых систем - SEF) используются для предоставления более коротких и более релевантных ссылок на веб-страницы. Техника добавляет степень разделения между файлами, используемыми для создания веб-страницы, и URL-адресом, который представляется миру .
Когда используется механизм перезаписи, у вас нет соотношения 1: 1 между URL и скриптом PHP. Пример из той же статьи:
http://example.com/wiki/index.php?title=Page_title
можно переписать как:
http://example.com/wiki/Page_title
Существуют различные преимущества использования техники. Поскольку PHP обычно тесно связан с Apache, наиболее часто используемый механизм переписывания - это Apache mod_rewrite .
Если вы хотите переписать URL-адреса, вам нужна какая-то маршрутизация, так как маршрутизация - это процесс взятия URL-адреса, разбиения его на компоненты и определения того, какой скрипт будет вызываться. Страница документации для стандартного маршрутизатора Zend Framework объясняет процесс следующим образом:
Маршрутизация - это процесс получения конечной точки URI (той части URI, которая идет после базового URL-адреса) и разбиения ее на параметры, чтобы определить, какой модуль, контроллер и действие этого контроллера должны получить запрос.
В настоящее время большинство PHP-фреймворков основаны на шаблоне MVC , а на MVC-фреймворке процесс выглядит примерно так * :
- Браузер указывает на URL,
- Веб-сервер перехватывает запрос и перенаправляет его в общую точку входа, обычно в
index.php
скрипт,
index.php
получает URL и запускает процесс маршрутизации.
- URL разбивается на параметры, где первый - это контроллер, второй - метод действия, а остальные считаются динамическими параметрами,
- Если существует класс контроллера, соответствующий первому параметру, создается экземпляр объекта контроллера,
- Метод действия, который обычно является функцией объекта контроллера, вызывается, и его возвращение - это то, что фактически возвращается браузеру.
Сопоставление параметров с контроллерами и методами обычно использует сопоставление с помощью регулярных выражений, чтобы иметь возможность обрабатывать сложные и динамические шаблоны маршрутизации, известные как маршруты. Хорошие примеры маршрутов можно найти на странице документации CodeIgniter по маршрутизации URI :
$ route ['journals'] = "блоги";
$ route ['blog / joe'] = "blogs / users / 34";
$ route ['product / (: any)'] = "catalog / product_lookup";
$ route ['product / (: num)'] = "catalog / product_lookup_by_id / $ 1";
$route
Массив содержит шаблоны в качестве ключей и результирующие действия в качестве значений в controller/action_method/dynamic_parameter
формате.
* Это не предназначено как описание канонического процесса, просто упрощенное объяснение.