ЧПУ для Yii2 Advanced, .htaccess и настройка

ЧПУ для Yii2 Advanced, .htaccess и настройка

И так, мы знаем, что Yii2 Basic односторонняя система и зачастую выступает в роли Frontend приложения не имея административной части сайта по умолчанию, поэтому настройка директив выполняется по упрощенной схеме. В предыдущей статье мы рассматривали настройку ЧПУ для Yii2 Basic, сейчас разберемся с настройкой для Yii2 Advanced.

.htaccess

Предположим, что Yii2 Advanced будем настраивать файл .htaccess для Frontend и Backend разделов, где Frontend часть будет выступать в роли публичного сайта с ЧПУ и Backend часть - просто заменим отображение абсолютного пути URL к админке c /backend/web/* на /admin/*.

Приступим. В корне вашего Web сайта необходимо создать файл .htaccess со следующими директивами:

<IfModule mod_autoindex.c>
	Options -Indexes
</IfModule>

<IfModule mod_rewrite.c>
	Options +SymLinksIfOwnerMatch
	RewriteEngine on

	RewriteCond %{REQUEST_URI} ^/(admin)
	RewriteRule ^admin(\/?.*)$ backend/web/$1 [L]
	 
	RewriteCond %{REQUEST_URI} ^/
	RewriteRule ^(\/?.*)$ frontend/web/$1 [L]
</IfModule>

После в директории /frontend/web и /backend/web создать файлы .htaccess с содержимым:

<IfModule mod_rewrite.c>
	RewriteEngine on
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteRule . index.php
</IfModule>

Конфигурация

Для backend

По скольку ЧПУ для админки вовсе не нужно (будет нагружать дополнительно Apache) в файл конфигурации просто запишем алиас /backend/web как admin. Отредактируем наш файл конфигурации /backend/config/main.php вставив в блок request строку 'baseUrl' => 'admin',:

'components' => [
	'request' => [
		// ...
		'baseUrl' => 'admin',
	],
],

Для frontend

Откроем файл конфигурации /frontend/config/main.php и запишем в блок request строку 'baseUrl' => '',, после раскомментируем блок urlManager и запишем туда наши правила:

'components' => [
	'request' => [
		// ...
		'baseUrl' => '',
	],
],
// ...
'urlManager' => [
	'enablePrettyUrl' => true,
	'showScriptName' => false,
	'rules' => [
        '' => 'site/index', // Для главной страницы
        '<controller:\w+>/<action:\w+>/' => '<controller>/<action>', // Для остальных контроллеров и действий
	],
],

Все, можно пользоваться.

В следующей статье сможем более детально разобраться как писать для ЧПУ правила в urlManager.


Комментарии (0)

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