Автор Тема: Правила для .htaccess Yii 2 basic. Или как убрать «/web» из URL.  (Прочитано 1102 раз)

kak2z

  • Administrator
  • Full Member
  • *****
  • Сообщений: 115
    • Просмотр профиля
Данная инструкция создана и протестирована для basic шаблона фреймворка Yii 2.

Для того, чтобы убрать "/web"  из адресной строки ULR и сделать ссылки в формате ЧПУ необходимо проделать несколько шагов:

1. В корневой директории создайте файл .htaccess  со следующим содержимым:

<IfModule mod_rewrite.c>
    Options +FollowSymlinks
    RewriteEngine On
</IfModule>

<IfModule mod_rewrite.c>
    RewriteCond %{REQUEST_URI} ^/.*
    RewriteRule ^(.*)$ web/$1 [L]

    RewriteCond %{REQUEST_URI} !^/web/
    RewriteCond %{REQUEST_FILENAME} !-f [OR]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^.*$ web/index.php
</IfModule>

2. В директории web вашего проекта на Yii 2 basic также создайте файл .htaccess , но уже с несколько другим содержимым:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

3. Измените файл /config/web.php добавив в раздел ‘request’ значение 'baseUrl'  пустую строку '' , т.е.:

'request' => [
    'baseUrl' => '',
],

Затем в этом же файле нужно добавить настройки 'urlManager' , как показано ниже

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

kak2z

  • Administrator
  • Full Member
  • *****
  • Сообщений: 115
    • Просмотр профиля
в корень
# Mod_Autoindex
<IfModule mod_autoindex.c>
    # Disable Indexes
    Options -Indexes
</IfModule>
 
# Mod_Rewrite
<IfModule mod_rewrite.c>
    # Enable symlinks
    Options +FollowSymlinks
    # Enable mod_rewrite
    RewriteEngine On
    # Redirect all requests to web
    RewriteCond %{REQUEST_URI} ^(.*)$
    RewriteRule ^(.*)$ web/$1
</IfModule>


в web
# Mod_Autoindex
<IfModule mod_autoindex.c>
  # Disable indexes
  Options -Indexes
</IfModule>
 
# Mod_Rewrite
<IfModule mod_rewrite.c>
  # Enable symlinks
  Options +FollowSymlinks
  # Enable mod_rewrite
  RewriteEngine On
  # If a directory or a file exists, use the request directly
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  # Otherwise forward the request to index.php
  RewriteRule . index.php
</IfModule>