Для реализации ЧПУ (Человекопонятных URL) с использованием регулярных выражений в Yii можно воспользоваться настройкой маршрутизации в файле конфигурации приложения (config/main.php
или config/main.php
).
Для начала, убедитесь, что у вас включен компонент URL-менеджера в файле конфигурации, и для этого в components
должна быть строка следующего вида:
'urlManager' => [ 'class' => 'yiiwebUrlManager', // другие настройки URL-менеджера... ],
После этого вы можете использовать метод addRules
в компоненте URL-менеджера для определения правил маршрутизации с помощью регулярных выражений. Например, добавим правило, чтобы страница /news/123
сопоставлялась с действием news/view
и параметром id=123
:
'components' => [ 'urlManager' => [ 'class' => 'yiiwebUrlManager', 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ 'news/<id:d+>' => 'news/view', ], ], ],
Здесь <id:d+>
задает шаблон для параметра id: только цифры (d+
).
Можно добавить несколько правил для разных маршрутов. Правила будут проверяться в порядке их объявления, поэтому следует помещать более специфичные правила перед более общими.
После настройки маршрутов, Yii будет автоматически преобразовывать входной URL в понятный формат для приложения. Вы также можете использовать метод createUrl
для создания ЧПУ URL в коде:
echo Yii::$app->urlManager->createUrl(['news/view', 'id' => 123]);
Это создаст URL вида /news/123
.
Надеюсь, что эта детальная информация ответила на ваш вопрос о том, как реализовать ЧПУ с использованием регулярных выражений в Yii. Если у вас возникнут дополнительные вопросы, пожалуйста, не стесняйтесь задавать!