Как правильно построить правило ЧПУ в Yii2?

В Yii2 для построения правил ЧПУ (Человекопонятных URL) используется механизм маршрутизации. Маршрутизация - это процесс преобразования входящего URL-адреса в соответствующий контроллер и действие в Yii2.

Создание правила ЧПУ в Yii2 включает в себя несколько шагов:

Шаг 1: Настройка файла конфигурации данного приложения
Откройте файл config/web.php (или config/main.php для приложений консоли) вашего приложения и найдите массив 'components'. Добавьте следующий код в этот массив:

'components' => [
    ...
    'urlManager' => [
        'enablePrettyUrl' => true,
        'showScriptName' => false,
        'rules' => [
            // здесь добавляем правила для ЧПУ
        ],
    ],
    ...
],

'enablePrettyUrl' устанавливает флаг разрешения ЧПУ, тогда как 'showScriptName' определяет необходимость показывать имя файла скрипта в URL. При установке значения 'false' для 'showScriptName', имя файла скрипта (index.php) будет исключено из ЧПУ.

Шаг 2: Добавление правил ЧПУ
Теперь вы можете добавить свои собственные правила маршрутизации в массив 'rules' в компоненте 'urlManager'. Есть несколько способов добавления правил:

- Статические правила:
Наиболее простым способом добавления статического правила ЧПУ является создание пары ключ-значение в массиве 'rules', где ключ указывает на URL-адрес, а значение - на соответствующий контроллер и действие.

  'rules' => [
      'about' => 'site/about',
      'contact' => 'site/contact',
  ],

В этом примере, при обращении к URL-адресу /about, будет вызвано действие 'about' в контроллере 'site'.

- Динамические правила:
Динамические правила позволяют передавать переменные в URL. Вы можете использовать регулярные выражения для определения шаблонов URL с переменными и указать, какие параметры будут переданы в действие контроллера.

  'rules' => [
      'post/<id:d+>' => 'blog/post',
      'page/<slug:[w-]+>' => 'page/view',
  ],

В этом примере, при обращении к URL-адресу /post/123 будет вызвано действие 'blog/post' с параметром id=123, а при обращении к URL-адресу /page/about-us будет вызвано действие 'page/view' с параметром slug='about-us'.

Есть и другие возможности и варианты настройки маршрутизации в Yii2. Вы можете использовать модули для добавления дополнительных правил ЧПУ, указывать дополнительные параметры, использовать разные форматы URL и т.д.

В целом, в Yii2 построение правил ЧПУ является гибким и мощным инструментом, который позволяет легко настроить структуру URL-адресов в вашем приложении.