Мы продолжаем наш курс по изучению фреймворка Yii 2. В 8-ом уроке мы разберем одну из тем, это работу с URL и маршрутизацией. Это важная часть любого веб-приложения, так как именно маршрутизация определяет, как пользователь взаимодействует с вашим сайтом. Мы поговорим о чистых URL, настройке веб-сервера, правилах маршрутизации, создании ЧПУ (человеко-понятных URL) и генерации ссылок.
Чистые URL: настройка веб-сервера (Apache/Nginx)
Чистые URL это URL, которые выглядят понятно и логично для пользователя. Вместо длинных строк с параметрами, например, index.php?r=site/about, мы можем использовать что-то вроде /site/about. Это не только улучшает читаемость, но и положительно влияет на SEO.
Настройка Apache
Для работы чистых URL в Apache нужно включить модуль mod_rewrite и добавить файл .htaccess в корневую директорию вашего проекта. В Yii 2 этот файл уже создан по умолчанию, но давайте разберем его содержимое:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
Эти строки говорят серверу перенаправлять все запросы на index.php, если запрашиваемый файл или директория не существуют. Это позволяет Yii 2 обрабатывать маршруты.
Настройка Nginx
Если вы используете Nginx, настройка будет немного другой. В конфигурации сервера добавьте следующие строки:
location / { try_files $uri $uri/ /index.php?$args; }
Этот код делает то же самое, что и .htaccess для Apache: перенаправляет запросы на index.php, если файл или директория не найдены.
Практическая задача
- Убедитесь, что на вашем сервере включен модуль
mod_rewrite(для Apache) или правильно настроен Nginx. - Проверьте, что чистые URL работают, открыв в браузере страницу
/site/about. Если вы видите содержимое страницы, значит, все настроено правильно.
Правила маршрутизации в config/web.php
Маршрутизация в Yii 2 настраивается в файле config/web.php. Основной элемент, который нас интересует, это массив rules внутри компонента urlManager. Этот массив определяет, как URL будут преобразовываться в маршруты и наоборот.
Пример базовой настройки
'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ 'about' => 'site/about', 'contact' => 'site/contact', ], ],
Здесь мы включили чистые URL (enablePrettyUrl), убрали index.php из URL (showScriptName) и добавили два простых правила маршрутизации. Теперь, когда пользователь перейдет по адресу /about, Yii 2 вызовет действие actionAbout в контроллере SiteController.
Расширенные правила
Yii 2 позволяет создавать более сложные правила с использованием регулярных выражений. Например:
'rules' => [ 'post/<id:\d+>' => 'post/view', ],
Это правило говорит, что URL вида /post/123 будет преобразован в маршрут post/view с параметром id, равным 123.
Практическая задача
- Добавьте в
config/web.phpправило, которое будет преобразовывать URL/user/profileв маршрутuser/profile. - Создайте правило для отображения статей, например,
/article/123, где123это ID статьи.
Параметры в URL: создание ЧПУ (человеко-понятных URL)
ЧПУ это URL, которые легко читаются и понимаются пользователями. Например, вместо /post/view?id=123 можно использовать /post/123-my-article-title. Это не только улучшает восприятие, но и помогает в SEO.
Пример создания ЧПУ
Допустим, у нас есть модель Post и мы хотим, чтобы URL статьи включал ее заголовок. Для этого мы можем изменить правило маршрутизации:
'rules' => [ 'post/<id:\d+>-<title>' => 'post/view', ],
Теперь URL будет выглядеть как /post/123-my-article-title. В контроллере PostController мы можем получить параметры id и title:
public function actionView($id, $title) { $post = Post::findOne($id); // Дальнейшая логика }
Практическая задача
- Создайте правило маршрутизации для статей, которое будет включать ID и заголовок.
- Реализуйте в контроллере обработку этих параметров и отображение соответствующей статьи.
Генерация ссылок через Url::to()
Yii 2 предоставляет удобный способ генерации ссылок через хелпер Url::to(). Этот метод позволяет создавать URL на основе маршрутов и параметров.
Пример использования
use yii\helpers\Url; // Генерация ссылки на действие контроллера echo Url::to(['site/about']); // Генерация ссылки с параметрами echo Url::to(['post/view', 'id' => 123, 'title' => 'my-article-title']);
Генерация абсолютных URL
Если вам нужно создать абсолютный URL (с доменом), используйте третий параметр:
echo Url::to(['site/about'], true);
Практическая задача
- Создайте ссылку на страницу контактов с помощью
Url::to(). - Сгенерируйте абсолютный URL для страницы статьи с ID 456 и заголовком «my-second-article».
В этом уроке мы разобрали ключевые аспекты работы с URL и маршрутизацией в Yii 2. Вы научились настраивать чистые URL, создавать правила маршрутизации, работать с ЧПУ и генерировать ссылки. Эти навыки помогут вам создавать более удобные и SEO-оптимизированные веб-приложения.
Попробуйте выполнить все предложенные задачи и поэкспериментировать с настройками. Если у вас возникнут вопросы, вы всегда можете обратиться к документации Yii 2 или задать вопрос в комментариях ниже.
Если вы хотите изучить Yii 2 от А до Я, рекомендую ознакомиться с полным курсом по ссылке: курс с уроками по Yii 2 для начинающих.
Поддержка автора осуществляется с помощью специальной формы ниже, предоставленной сервисом «ЮMoney». Все платёжные операции выполняются на защищённой странице сервиса, что обеспечивает их корректность и полную безопасность.


