В Yii2 для приведения ссылок к ЧПУ виду (Человекопонятный URL) вам нужно выполнить несколько шагов.
Шаг 1: Настройка компонента URL Manager
Сначала нужно настроить компонент URL Manager, который будет отвечать за обработку и преобразование URL. Откройте файл config/web.php
и найдите секцию components
. Добавьте или измените следующий код:
'components' => [ 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ // здесь можно добавить дополнительные правила для преобразования URL ], ], // остальные компоненты ],
enablePrettyUrl
устанавливает включен ли режим ЧПУ. Если это значение установлено на true
, Yii2 будет использовать ЧПУ для преобразования URL. showScriptName
устанавливает, будет ли имя сценария (например, index.php
) отображаться в URL. Установите этот параметр в false
, чтобы скрыть имя сценария.
Вы также можете настроить дополнительные правила преобразования URL в секции rules
. Например, для преобразования URL /site/about
в /about
, вы можете добавить следующее правило:
'rules' => [ 'about' => 'site/about', // другие правила ],
Шаг 2: Использование ЧПУ в контроллерах и представлениях
После настройки компонента URL Manager вы можете использовать ЧПУ в контроллерах и представлениях. Для создания ссылок в ЧПУ виде, используйте метод createUrl()
или createAbsoluteUrl()
класса Url
.
use yiihelpersUrl; // создание ссылки в ЧПУ виде $url = Url::to(['site/about']); // создание абсолютной ссылки в ЧПУ виде $absoluteUrl = Url::to(['site/about'], true); // использование в представлении <a href="<?= Url::to(['site/about']) ?>">About</a>
Метод createUrl()
принимает массив с параметрами, где первый элемент - это маршрут к контроллеру и действию, а остальные элементы - дополнительные параметры. Например, ['site/about', 'id' => 1]
преобразуется в /site/about?id=1
.
Метод createAbsoluteUrl()
создает абсолютную ссылку, включая доменное имя и протокол.
Шаг 3: Настройка .htaccess (для серверов Apache)
Если вы используете сервер Apache, вам также потребуется настроить файл .htaccess для обработки ЧПУ. Создайте файл .htaccess в корне вашего проекта и добавьте в него следующий код:
Options +FollowSymLinks RewriteEngine On # Если директория или файл существует, использовать его RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # Переадресация всех запросов к файлу index.php RewriteRule . index.php
Этот файл .htaccess позволит серверу Apache перенаправлять все запросы на файл index.php. Благодаря этому, Yii2 будет обрабатывать все URL через фронт-контроллер.
После всех этих шагов, ваши ссылки должны автоматически приводиться в ЧПУ вид.