.htaccess для Yii 2 advanced

Пошаговая инструкция

Шаг 1

В корень (@app) проекта добавляем .htaccess со следующим содержанием:

  1. <IfModule mod_rewrite.c>
  2. Options +FollowSymlinks
  3. RewriteEngine On
  4. </IfModule>
  5.  
  6. <IfModule mod_rewrite.c>
  7. # если /admin, то в backend
  8. RewriteCond %{REQUEST_URI} ^/(admin)
  9. RewriteRule ^admin/assets/(.*)$ backend/web/assets/$1 [L]
  10. RewriteRule ^admin/css/(.*)$ backend/web/css/$1 [L]
  11. RewriteRule ^admin/js/(.*)$ backend/web/js/$1 [L]
  12. RewriteCond %{REQUEST_URI} !^/backend/web/(assets|js|css|js)/
  13. RewriteCond %{REQUEST_URI} ^/(admin)
  14. RewriteRule ^.*$ backend/web/index.php [L]
  15. RewriteCond %{REQUEST_URI} ^/(assets|css|js|images)
  16. RewriteRule ^assets/(.*)$ frontend/web/assets/$1 [L]
  17. RewriteRule ^css/(.*)$ frontend/web/css/$1 [L]
  18. RewriteRule ^js/(.*)$ frontend/web/js/$1 [L]
  19. RewriteRule ^images/(.*)$ frontend/web/images/$1 [L]
  20. RewriteRule ^(.*)$ frontend/web/$1 [L]
  21. RewriteCond %{REQUEST_URI} !^/(frontend|backend)/web/(assets|css|js)/
  22. RewriteCond %{REQUEST_URI} !index.php
  23. RewriteCond %{REQUEST_FILENAME} !-f [OR]
  24. RewriteCond %{REQUEST_FILENAME} !-d
  25. RewriteRule ^.*$ frontend/web/index.php
  26. </IfModule>

Где admin - путь к @backend/web, его можно заменить на то, что вам больше нравится, например: administrator, cms-admin или ya-admin)

Шаг 2

В папку @frontend/web добавляем файл .htaccess со следующим содержанием:

  1. RewriteEngine on
  2.  
  3. # если это папка или файл, открываем его
  4. RewriteCond %{REQUEST_FILENAME} !-f
  5. RewriteCond %{REQUEST_FILENAME} !-d
  6.  
  7. # в противном случае перенаправляем на index.php
  8. RewriteRule . index.php

Шаг 3

В файле @frontend/config/main.php в элемент components массива добавляем:

  1. 'request' => [
  2. 'baseUrl' => '',
  3. ],
  4. 'urlManager' => [
  5. 'enablePrettyUrl' => true,
  6. 'showScriptName' => false,
  7. 'rules' => [
  8. '' => 'site/index',
  9. '<controller:\w+>/<action:\w+>/' => '<controller>/<action>',
  10. ],
  11. ],

Получится что-то вроде (более подробный пример):

  1. <?php
  2.  
  3. //...
  4. return [
  5. //...
  6. 'components' => [
  7. //...
  8. 'request' => [
  9. 'baseUrl' => '',
  10. ],
  11. 'urlManager' => [
  12. 'enablePrettyUrl' => true,
  13. 'showScriptName' => false,
  14. 'rules' => [
  15. '' => 'site/index',
  16. '<controller:\w+>/<action:\w+>/' => '<controller>/<action>',
  17. ],
  18. ],
  19. //...
  20. ],
  21. //...
  22. ];

Шаг 4

В папку @backend/web добавляем файл .htaccess со следующим содержанием:

  1. RewriteEngine on
  2.  
  3. # если это папка или файл, открываем его
  4. RewriteCond %{REQUEST_FILENAME} !-f
  5. RewriteCond %{REQUEST_FILENAME} !-d
  6.  
  7. # в противном случае перенаправляем на index.php
  8. RewriteRule . index.php

Шаг 5

В файле @backend/config/main.php в элемент components массива добавляем:

  1. 'request' => [
  2. 'baseUrl' => '/admin',
  3. ],
  4. 'urlManager' => [
  5. 'enablePrettyUrl' => true,
  6. 'showScriptName' => false,
  7. 'rules' => [
  8. '' => 'site/index',
  9. '<controller:\w+>/<action:\w+>/' => '<controller>/<action>',
  10. ],
  11. ],

Готово)

Источник: Перейти
Комментарии (0):
Чтобы оставить свой комментарий, необходимо пройти аутентификацию