UrlManager (роутинг) в Yii2


Все новички сталкиваются с проблемой ЧПУ в Yii2. Действительно, непонятно, почему разработчики фреймворка не сделали такую функцию сразу из "коробки". Ниже рассмотрим создание красивых ссылок для php-фреймвока Yii2 версии base.

Не забываем, что на официальном сайте есть подробная техническая документация. Общее правило формирования ссылок в Yii2 фреймворке выглядит следующим образом:

'<контроллер:регулярное_выражение>/<действие:регулярное_выражение>' => '<Контроллер>/<Действие>'

Левая часть правила может видоизменяться. Наш Yii2 Base проект содержит контроллер site и несколько действий about, contact, index, login и имеет непрезентабельные ссылки на эти страницы. Поэтому, для начала, описываем правила роутинга в настройках (config/web.php) в массиве "components":

        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
                '/' => 'site/index',
                '<action:\w+>'=>'site/<action>',
            ],

Очень многие интересуются, как убрать "web" из URL во фреймворке Yii2? для этого необходимо в массив "request" добавить:

'baseUrl'=> '',

Но многие пренебрегают этой строкой. В итоге, Ваши настройки будут выглядеть так:



Но после настроек, ссылки не будут продолжать работать корректно. Для корректной работы необходимо в корне сайта добавить .htaccess файл со следующим содержимым:

Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/(web)
RewriteRule ^assets/(.*)$ /web/assets/$1 [L]
RewriteRule ^css/(.*)$ web/css/$1 [L]
RewriteRule ^fonts/(.*)$ web/fonts/$1 [L]
RewriteRule ^js/(.*)$ web/js/$1 [L]
RewriteRule ^images/(.*)$ web/images/$1 [L]
RewriteRule ^robots.txt web/robots.txt [L]
# Все что находится в папке web, что нужно показать
RewriteRule (.*) /web/$1
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /web/index.php

А в папку "web" добавить .htaccess со следующим содержимым:

RewriteBase /
# Если это папка или файл, открываем его
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# В противном случае перенаправляем на index.php
RewriteRule . index.php

Мы рассмотрели возможность создания красивых ссылок для фреймворка Yii2 в версии Base. И удалили "web" из URL нашего сайта.скачать dle 11.1смотреть фильмы бесплатно
Yii
  • Все о Rust