PHP-маршрутизация с .htaccess: полное руководство по переписыванию URL-адресов

Метод 1: базовая маршрутизация с использованием правил.htaccess
Самый простой способ реализовать маршрутизацию в PHP — через правила.htaccess. Вот пример:

RewriteEngine On
RewriteRule ^products/([0-9]+)/?$ product.php?id=$1 [L]

В этом примере любой запрос к /products/123будет внутренне перенаправлен на product.php?id=123. Вы можете получить доступ к идентификатору продукта в своем PHP-скрипте, используя $_GET['id'].

Метод 2: сопоставление URL-адресов с контроллерами с помощью шаблона Front Controller
Шаблон Front Controller — это широко используемый подход в средах PHP. Он предполагает маршрутизацию всех запросов через одну точку входа (например, index.php), которая затем отправляет запрос соответствующему контроллеру на основе URL-адреса. Вот пример:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

В этом примере любой запрос, который не является существующим файлом или каталогом, будет перенаправлен на index.php. Запрошенный URL-адрес будет передан как параметр запроса (url), который можно использовать для определения соответствующего контроллера и действия.

Метод 3: использование библиотеки или платформы маршрутизации
Если вы работаете с платформой или библиотекой PHP, скорее всего, она имеет встроенные возможности маршрутизации. Эти платформы обеспечивают более структурированный и гибкий способ управления маршрутизацией. Например, в популярной среде Laravel вы можете определять маршруты с помощью специального файла маршрутизации или с помощью гибкого API:

Route::get('/products/{id}', 'ProductController@show');

Это определение маршрута сопоставляет URL-адрес /products/{id}с методом showкласса ProductController. Заполнитель {id}будет передан в качестве параметра методу контроллера.