Yii2. Как настроить .htaccess для advanced-шаблона? Yii2 htaccess для хостинга
.htaccess для Yii 2 - PandaTeam
Правильный .htaccess для basic и advanced приложения Yii 2.0. Думаю все кто начинал работать с Yii2 стыкались с такой «проблемой» как настройка apache под проект. Эта статья-шпаргалкой для тех кто знакомиться с Yii2. В статье я показал как самые примитивные решения так и альтернативные, а вы выбирайте которые вы будете использовать.
Для basic:
Шаг 1
В корень проекта добавляем .htaccess со следующим содержанием:
Options +FollowSymLinks IndexIgnore **
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/(web)
RewriteRule ^assets/(.*)$ /web/assets/$1 [L]
RewriteRule ^css/(.*)$ web/css/$1 [L]
RewriteRule ^js/(.*)$ web/js/$1 [L]
RewriteRule ^images/(.*)$ web/images/$1 [L]
RewriteRule (.*) /web/$1
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /web/index.php
Шаг 2
В папку /web добавляем файл .htaccess со следующим содержанием:
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php |
Шаг 3
В файле /config/web.php в элемент components массива добавляем:
'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ '' => 'site/index', '<controller:\w+>/<action:\w+>/' => '<controller>/<action>', ], ],
'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ '' => 'site/index', '<controller:\w+>/<action:\w+>/' => '<controller>/<action>', ], ], |
Альтернативный вариант для базового шаблона
Options +FollowSymLinks IndexIgnore **
RewriteEngine on
# Если запрос не начинается с web, добавляем его
RewriteCond %{REQUEST_URI} !^/(web)
RewriteRule (.*) /web/$1
# Если файл или каталог не существует, идём к /web/index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /web/index.php
Для advanced:
Упрощенный вариант
Options +FollowSymLinks IndexIgnore **
RewriteEngine on
# Если запрос начинается с /admin, то заменяем на /backend/web/
RewriteCond %{REQUEST_URI} ^/admin
RewriteRule ^admin\/?(.*) /backend/web/$1
# Добавляем другой запрос /frontend/web/$1
RewriteCond %{REQUEST_URI} !^/(frontend/web|backend/web|admin)
RewriteRule (.*) /frontend/web/$1
# Если frontend запрос
RewriteCond %{REQUEST_URI} ^/frontend/web
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /frontend/web/index.php
# Если backend запрос
RewriteCond %{REQUEST_URI} ^/backend/web
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /backend/web/index.php...
Источник: http://mainview.ru/programming/yii/pravilnyj-htaccess-dlya-basic-i-advanced-prilozheniya-yii-2-0
Полная инструкция
Шаг 1
В корень (@app) проекта добавляем .htaccess со следующим содержанием:
<IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On </IfModule> <IfModule mod_rewrite.c> # если /admin, то в backend RewriteCond %{REQUEST_URI} ^/(admin) RewriteRule ^admin/assets/(.*)$ backend/web/assets/$1 [L] RewriteRule ^admin/css/(.*)$ backend/web/css/$1 [L] RewriteRule ^admin/js/(.*)$ backend/web/js/$1 [L] RewriteCond %{REQUEST_URI} !^/backend/web/(assets|js|css|js)/ RewriteCond %{REQUEST_URI} ^/(admin) RewriteRule ^.*$ backend/web/index.php [L] RewriteCond %{REQUEST_URI} ^/(assets|css|js|images) RewriteRule ^assets/(.*)$ frontend/web/assets/$1 [L] RewriteRule ^css/(.*)$ frontend/web/css/$1 [L] RewriteRule ^js/(.*)$ frontend/web/js/$1 [L] RewriteRule ^images/(.*)$ frontend/web/images/$1 [L] RewriteRule ^(.*)$ frontend/web/$1 [L] RewriteCond %{REQUEST_URI} !^/(frontend|backend)/web/(assets|css|js)/ RewriteCond %{REQUEST_URI} !index.php RewriteCond %{REQUEST_FILENAME} !-f [OR] RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^.*$ frontend/web/index.php </IfModule>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On </IfModule> <IfModule mod_rewrite.c> # если /admin, то в backend RewriteCond %{REQUEST_URI} ^/(admin) RewriteRule ^admin/assets/(.*)$ backend/web/assets/$1 [L] RewriteRule ^admin/css/(.*)$ backend/web/css/$1 [L] RewriteRule ^admin/js/(.*)$ backend/web/js/$1 [L] RewriteCond %{REQUEST_URI} !^/backend/web/(assets|js|css|js)/ RewriteCond %{REQUEST_URI} ^/(admin) RewriteRule ^.*$ backend/web/index.php [L] RewriteCond %{REQUEST_URI} ^/(assets|css|js|images) RewriteRule ^assets/(.*)$ frontend/web/assets/$1 [L] RewriteRule ^css/(.*)$ frontend/web/css/$1 [L] RewriteRule ^js/(.*)$ frontend/web/js/$1 [L] RewriteRule ^images/(.*)$ frontend/web/images/$1 [L] RewriteRule ^(.*)$ frontend/web/$1 [L] RewriteCond %{REQUEST_URI} !^/(frontend|backend)/web/(assets|css|js)/ RewriteCond %{REQUEST_URI} !index.php RewriteCond %{REQUEST_FILENAME} !-f [OR] RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^.*$ frontend/web/index.php </IfModule> |
Где admin — путь к @backend/web, его можно заменить на то, что вам больше нравится, например: administrator, cms-admin или ya-admin)
Шаг 2
В папку @frontend/web добавляем файл .htaccess со следующим содержанием:
RewriteEngine on # если это папка или файл, открываем его RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # в противном случае перенаправляем на index.php RewriteRule . index.php
RewriteEngine on # если это папка или файл, открываем его RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # в противном случае перенаправляем на index.php RewriteRule . index.php |
Шаг 3
В файле @frontend/config/main.php в элемент components массива добавляем:
'request' => [ 'baseUrl' => '', ], 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ '' => 'site/index', '<controller:\w+>/<action:\w+>/' => '<controller>/<action>', ], ],
'request' => [ 'baseUrl' => '', ], 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ '' => 'site/index', '<controller:\w+>/<action:\w+>/' => '<controller>/<action>', ], ], |
Шаг 4
В папку @backend/web добавляем файл .htaccess со следующим содержанием:
RewriteEngine on # если это папка или файл, открываем его RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # в противном случае перенаправляем на index.php RewriteRule . index.php
RewriteEngine on # если это папка или файл, открываем его RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # в противном случае перенаправляем на index.php RewriteRule . index.php |
Шаг 5
В файле @backend/config/main.php в элемент components массива добавляем:
'request' => [ 'baseUrl' => '/admin', ], 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ '' => 'site/index', '<controller:\w+>/<action:\w+>/' => '<controller>/<action>', ], ],
'request' => [ 'baseUrl' => '/admin', ], 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ '' => 'site/index', '<controller:\w+>/<action:\w+>/' => '<controller>/<action>', ], ], |
www.pandateam.net.ua
.htaccess для Yii 2 advanced
Пошаговая инструкция
Шаг 1
В корень (@app) проекта добавляем .htaccess со следующим содержанием:
<IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On </IfModule> <IfModule mod_rewrite.c> # если /admin, то в backend RewriteCond %{REQUEST_URI} ^/(admin) RewriteRule ^admin/assets/(.*)$ backend/web/assets/$1 [L] RewriteRule ^admin/css/(.*)$ backend/web/css/$1 [L] RewriteRule ^admin/js/(.*)$ backend/web/js/$1 [L] RewriteCond %{REQUEST_URI} !^/backend/web/(assets|js|css|js)/ RewriteCond %{REQUEST_URI} ^/(admin) RewriteRule ^.*$ backend/web/index.php [L] RewriteCond %{REQUEST_URI} ^/(assets|css|js|images) RewriteRule ^assets/(.*)$ frontend/web/assets/$1 [L] RewriteRule ^css/(.*)$ frontend/web/css/$1 [L] RewriteRule ^js/(.*)$ frontend/web/js/$1 [L] RewriteRule ^images/(.*)$ frontend/web/images/$1 [L] RewriteRule ^(.*)$ frontend/web/$1 [L] RewriteCond %{REQUEST_URI} !^/(frontend|backend)/web/(assets|css|js)/ RewriteCond %{REQUEST_URI} !index.php RewriteCond %{REQUEST_FILENAME} !-f [OR] RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^.*$ frontend/web/index.php </IfModule>Где admin - путь к @backend/web, его можно заменить на то, что вам больше нравится, например: administrator, cms-admin или ya-admin)
Шаг 2
В папку @frontend/web добавляем файл .htaccess со следующим содержанием:
RewriteEngine on # если это папка или файл, открываем его RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # в противном случае перенаправляем на index.php RewriteRule . index.phpШаг 3
В файле @frontend/config/main.php в элемент components массива добавляем:
'request' => [ 'baseUrl' => '', ], 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ '' => 'site/index', '<controller:\w+>/<action:\w+>/' => '<controller>/<action>', ], ],Получится что-то вроде (более подробный пример):
<?php //... return [ //... 'components' => [ //... 'request' => [ 'baseUrl' => '', ], 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ '' => 'site/index', '<controller:\w+>/<action:\w+>/' => '<controller>/<action>', ], ], //... ], //... ];Шаг 4
В папку @backend/web добавляем файл .htaccess со следующим содержанием:
RewriteEngine on # если это папка или файл, открываем его RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # в противном случае перенаправляем на index.php RewriteRule . index.phpШаг 5
В файле @backend/config/main.php в элемент components массива добавляем:
'request' => [ 'baseUrl' => '/admin', ], 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ '' => 'site/index', '<controller:\w+>/<action:\w+>/' => '<controller>/<action>', ], ],Готово)
Автор
Yehor Rykhnov
Если у вас есть вопросы или предложения по улучшению кода описанного в статье пишите в комментариях. Я всегда открыт к конструктивному диалогу
xn--d1acnqm.xn--j1amh
.htaccess для Yii 2 basic
Пошаговая инструкция
Шаг 1
В корень проекта добавляем .htaccess со следующим содержанием:
Options +FollowSymLinks IndexIgnore ** RewriteEngine On RewriteCond %{REQUEST_URI} !^/(web) RewriteRule ^assets/(.*)$ /web/assets/$1 [L] RewriteRule ^css/(.*)$ web/css/$1 [L] RewriteRule ^js/(.*)$ web/js/$1 [L] RewriteRule ^images/(.*)$ web/images/$1 [L] RewriteRule (.*) /web/$1 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /web/index.phpOptions +FollowSymLinks IndexIgnore ** RewriteEngine on # Если запрос начинается с /administrator, то заменяем на /backend/web/ RewriteCond %{REQUEST_URI} ^/administrator RewriteRule ^administrator\/?(.*) /backend/web/$1 # Добавляем другой запрос /frontend/web/$1 RewriteCond %{REQUEST_URI} !^/(frontend/web|backend/web|administrator) RewriteRule (.*) /frontend/web/$1 # Если frontend запрос RewriteCond %{REQUEST_URI} ^/frontend/web RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /frontend/web/index.php # Если backend запрос RewriteCond %{REQUEST_URI} ^/backend/web RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /backend/web/index.php
Приведенный выше файл направит запросы, которые начинаются на ‘administrator’ в папку /backend/web/, а все остальные — в папку /frontend/web.Таким образом мы получаем желаемое — запросы к админке попадают по адресу. RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php
Вот и все. Теперь обращения к каждой из сущностей настроено. Похожие записиonfor.info php - Yii2 htaccess - Как скрыть интерфейс /web и бэкэнд /web ПОЛНОСТЬЮЯ думаю, что я довольно близко. Я перенаправляю htaccess на веб-сайт (frontend/web) и путь /admin (backend/web). Сайт выглядит отлично, загрузка файлов CSS и т.д. Если вы переходите к: http://localhost/yii2app/ - он загружает домашнюю страницу и не перенаправляет ее в адресную строку, но на странице отображается интерфейс/сеть во всех URL. если вы перейдете к: http://localhost/yii2app/admin - он загружает страницу входа в систему, однако она сразу же перенаправляет на /backend/web/site/login в адресной строке (некрасиво). Проблема: пути frontend/backend отображаются в URL-адресах (адресная строка и ссылки на странице). Что мне нужно: я хочу, чтобы весь сайт работал без отображения интерфейсных/бэкэнд-ссылок. Корень проекта должен вытащить (невидимо) из frontend/web, не показывая его. Итак http://localhost/yii2app/ запускает весь мой интерфейс и http://localhost/yii2app/admin/ работает весь мой сервер. Почему? Я чувствую, что эта настройка будет довольно прочной и элегантной, когда вы будете жить на сервере. Я хочу, чтобы иметь возможность подталкивать мою папку проекта в реальном времени на сайт, и она работает отлично, без необходимости иметь хаки для обработки локального сервера vs. .htaccess файл в /yii2app dir: Options -Indexes RewriteEngine on <IfModule mod_rewrite.c> RewriteCond %{REQUEST_URI} !^/backend/web/(assets|css)/ RewriteCond %{REQUEST_URI} admin RewriteRule .* backend/web/index.php [L] RewriteCond %{REQUEST_URI} !^/(frontend|backend)/web/(assets|css)/ RewriteCond %{REQUEST_URI} !admin RewriteRule .* frontend/web/index.php [L] </IfModule>Теперь в интерфейсных и бэкэндовых веб-каталогах оба они имеют одинаковый .htaccess: 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Я не хочу видеть /frontend/web или /backend/web когда-либо:) Я попытался сыграть с RewriteRule в корневом htaccess, чтобы добавить /admin в URL-адрес, но он все время говорил мне, что /admin не существует. Я ЗНАЮ, что этого не существует, и я не хочу, чтобы он существовал. Я хочу, чтобы это был относительный путь.. ie:/admin ==/backend/web. Слово другое. Я все в корне проекта (http://localhost/yii2app/) загрузил frontend/web, но не показывая его. Кроме того, http://localhost/yii2app/admin загрузить backend/web и просто показать http://localhost/yii2app/admin. Очевидно, что к ним присоединятся их controller/action. Таким образом, администратор может выглядеть как http://localhost/yii2app/admin/site/login ПРИМЕЧАНИЕ. Я не играл ни с одним из файлов. Это расширенная настройка yii2, использующая композитор и следуя документам. Единственное, что я сыграл до сих пор, - это упомянутые файлы htaccess. Спасибо! qaru.site Yii2 настройка. Настройка htaccessОт автора: приветствую вас, друзья. Мы продолжаем цикл статей, посвященных знакомству с фреймворком Yii2. В этой статье мы поговорим о такой теме, как Yii2 настройка. Здесь мы рассмотрим различные настройки фреймворка: файл htaccess, настройки Apache и Nginx, конфигурация почты и т.д. В процессе работы с фреймворком Yii вам часто придется работать с различными настройками фреймворка. Поэтому в данной статье мы рассмотрим некоторые из них. Начнем с ряда настроек, с которыми вам придется столкнуться сразу после установки фреймворка. Как вы помните, публичной папкой фреймворка является папка web. Именно в нее нужно перенаправить все запросы. Как это сделать? Во-первых, можно воспользоваться возможностями файла htaccess. Для этого нам потребуется создать пару таких файлов. Первый файл мы поместим в корень Yii, а второй — в папку web. Далее нам необходимо будет добавить следующие строки кода в первый файл htaccess: RewriteEngine on RewriteRule ^(.+)?$ /web/$1
Практический курс по верстке адаптивного лендинга с нуля! Научитесь с нуля верстать адаптивные лендинги на HTML5 и CSS3 за ближайшие 6 дней Узнать подробнееЭта настройка htaccess включит модуль Apache mod_rewrite и отправит все запросы в папку web. Ну а в файле htaccess из папки web мы напишем следующие строки: RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php
Эта настройка все запросы, которые не идут к реально существующим файлам и папкам, перенаправит на фронт-контроллер фреймворка — файл index.php. После этой настройки htaccess при обращении к корню сайта мы должны попасть на главную страницу. Напомню, по умолчанию, нам нужно обращаться для этого к папке web. При настройке Yii, особенно на реальном сервере, возможно не всегда получится использовать файл htaccess. В этом случае можно обратиться к настройке сервера. Суть такой настройки сводится к тому, чтобы изменить корневую директорию сервера и сделать так, чтобы корневой стала директория web. В документации на официальном сайте можно найти необходимые строки кода для настройки Apache и Nginx. Воспользуйтесь ими, чтобы произвести необходимую конфигурацию. Если вы не имеете доступа к настройкам сервера, тогда можно обратиться в поддержку вашего хостинга, как правило, саппорт помогает с такими вопросами. Это далеко не все настройки, с которыми вам придется столкнуться в процесс работы с фреймворком. Но это первые из них, которые вам потребуются уже на первом этапе работы, фактически сразу после установки. На этом сегодня все. Больше о фреймворке вы можете узнать из наших бесплатных или платных уроков. Также создание простейшего блога на Yii2 можно посмотреть в этом цикле уроков. Фреймворк YII2: теория и первая практикаОвладейте азами фреймворка Yii2 за 5 дней! Получитьwebformyself.com |