[РЕШЕНО] Убрать /frontend/web/ из строки адреса
Re: [РЕШЕНО] Убрать /frontend/web/ из строки адреса
осваиваюсь с Yii2 после yii 1)
Я вот больше пока склоняюсь к варианту из коробки. Если шаред хостинг не дает возможности ровным способом это сделать тогда вижу такое:
есть на хостинге папка вашего хостинг аккаунта:
/somedir/username/
в которой хранятся папки с вашими доменами:
/somedir/username/domain.ru/
/somedir/username/domain.com/
/somedir/username/domain.org/
вам надо чтобы все сайты(они конечно все разные между собой) работали на yii2 (шаблон advanced)
на примере с доменом domain.ru:
/somedir/username/domain.ru_yii/ - сюда заливаем все содержимое yii2
/somedir/username/domain.ru/ - тут делаем симлинк на /somedir/username/domain.ru_yii/frontend/web
По поводу бэкенда, 2 варинта (кому что). Как по мне - субдомен.
1-ый. Субдомен. т.е. будет доступен как http://backend.domen.ru ...ну или как назовете субдомен.
/somedir/username/backend.domain.ru/ - тут делаем симлинк на /somedir/username/domain.ru_yii/backend/web
2-ой. В виде папки на том же домене. т.е. будет доступен как http://domen.ru/backend/ ...ну или как назовете "папку"
/somedir/username/domain.ru_yii/frontend/web/backend/ - тут делаем симлинк на /somedir/username/domain.ru_yii/backend/web
..для доменов "domain.com" и "domain.org" делаем аналогично.
Вариант пока только теоретический. Скоро думаю станет моим "практическим".
1. Из плюсов что я тут вижу - не нужно "издеваться )) " над yii2. Все можно сказать как и было из коробки, только обошли ограничения шаред хостинга.
2. Такая схема довольно гибкая, подойдет к любому шаред хостингу.
3. Можно как нужно обыграть симлинками ситуацию при нескольких сайтах на yii2 в одном аккаунте хостинга.
p.s. жду критических и положительных комментариев. Отпишите пожалуйста Ваше мнение.
Спасибо!
Я вот больше пока склоняюсь к варианту из коробки. Если шаред хостинг не дает возможности ровным способом это сделать тогда вижу такое:
есть на хостинге папка вашего хостинг аккаунта:
/somedir/username/
в которой хранятся папки с вашими доменами:
/somedir/username/domain.ru/
/somedir/username/domain.com/
/somedir/username/domain.org/
вам надо чтобы все сайты(они конечно все разные между собой) работали на yii2 (шаблон advanced)
на примере с доменом domain.ru:
/somedir/username/domain.ru_yii/ - сюда заливаем все содержимое yii2
/somedir/username/domain.ru/ - тут делаем симлинк на /somedir/username/domain.ru_yii/frontend/web
По поводу бэкенда, 2 варинта (кому что). Как по мне - субдомен.
1-ый. Субдомен. т.е. будет доступен как http://backend.domen.ru ...ну или как назовете субдомен.
/somedir/username/backend.domain.ru/ - тут делаем симлинк на /somedir/username/domain.ru_yii/backend/web
2-ой. В виде папки на том же домене. т.е. будет доступен как http://domen.ru/backend/ ...ну или как назовете "папку"
/somedir/username/domain.ru_yii/frontend/web/backend/ - тут делаем симлинк на /somedir/username/domain.ru_yii/backend/web
..для доменов "domain.com" и "domain.org" делаем аналогично.
Вариант пока только теоретический. Скоро думаю станет моим "практическим".
1. Из плюсов что я тут вижу - не нужно "издеваться )) " над yii2. Все можно сказать как и было из коробки, только обошли ограничения шаред хостинга.
2. Такая схема довольно гибкая, подойдет к любому шаред хостингу.
3. Можно как нужно обыграть симлинками ситуацию при нескольких сайтах на yii2 в одном аккаунте хостинга.
p.s. жду критических и положительных комментариев. Отпишите пожалуйста Ваше мнение.
Спасибо!
CPU comparison platform: CPU Boss Multi language, Yii2 powered.
-
- Сообщения: 5
- Зарегистрирован: 2014.10.29, 21:29
Re: [РЕШЕНО] Убрать /frontend/web/ из строки адреса
Видимо я вчера погорячился подтвердив что мой .htaccess на странице 2 полностью рабочий ))) Доступ в админку не работает, 404. Вариант с субдоменом не всегда хорошое решение, особенно если есть недорогой SSL сертификат без wildcard. Есть ли у кого рабочий вариант .htaccess и конфигов такого плана когда всё в подпапке?
http://localhost/test/ - для фронтенда
http://localhost/test/admin/ - для backenda
Вижу что данная тема поднимается на форумах не раз. Хороший, рабочий пример будет весьма полезен для тех кто только начинает знакомится с Yii2.
Заранее спасибо!
http://localhost/test/ - для фронтенда
http://localhost/test/admin/ - для backenda
Вижу что данная тема поднимается на форумах не раз. Хороший, рабочий пример будет весьма полезен для тех кто только начинает знакомится с Yii2.
Заранее спасибо!
-
- Сообщения: 5
- Зарегистрирован: 2014.10.29, 21:29
Re: [РЕШЕНО] Убрать /frontend/web/ из строки адреса
В общем в итоге победил с минимальной необходимостью .htaccess таким образом:
Frontend:
Будет доступен в стиле http://localhost/test (ну или в зависимости от названия подпапки, в примере ниже нужно будет заменить test на то что надо)
1. Перемещаем index.php из /frontend/web в корень папки test
2. Изменяем пути в index.php таким образом:
3. Изменяем frontend/config/main.php. Файл целиком выглядит так:
4. В корень папки test добавляем .htaccess чтобы не использовать scriptname (index.php):
Backend
1. Переносим index.php из /backend/web на одну папку назад (т.е прямо в backend)
2. Изменяем содержимое файла на:
3. Изменяем backend/config/main.php. Файл целиком выглядит так:
4. В корень папки /backend добавляем .htaccess как для фронтенда:
Готово!
Frontend: http://localhost/test
Backend: http://localhost/test/backend
Все работает включая ссылки и стили. Ругайте если что не так )))
Frontend:
Будет доступен в стиле http://localhost/test (ну или в зависимости от названия подпапки, в примере ниже нужно будет заменить test на то что надо)
1. Перемещаем index.php из /frontend/web в корень папки test
2. Изменяем пути в index.php таким образом:
Код: Выделить всё
<?php
defined('YII_DEBUG') or define('YII_DEBUG', false);
defined('YII_ENV') or define('YII_ENV', 'prod');
require(__DIR__ . '/vendor/autoload.php');
require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');
require(__DIR__ . '/common/config/bootstrap.php');
require(__DIR__ . '/frontend/config/bootstrap.php');
$config = yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/common/config/main.php'),
require(__DIR__ . '/common/config/main-local.php'),
require(__DIR__ . '/frontend/config/main.php'),
require(__DIR__ . '/frontend/config/main-local.php')
);
$application = new yii\web\Application($config);
$application->run();
Код: Выделить всё
<?php
$params = array_merge(
require(__DIR__ . '/../../common/config/params.php'),
require(__DIR__ . '/../../common/config/params-local.php'),
require(__DIR__ . '/params.php'),
require(__DIR__ . '/params-local.php')
);
return [
'id' => 'app-frontend',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],
'controllerNamespace' => 'frontend\controllers',
'components' => [
'user' => [
'identityClass' => 'common\models\User',
'enableAutoLogin' => true,
],
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
//'suffix' => '.html',
'rules' => [
'' => 'site/index',
'<action>'=>'site/<action>',
],
],
'assetManager' => [
'basePath' => '@webroot/frontend/web/assets',
'baseUrl' => '@web/frontend/web/assets'
],
'request' => [
'baseUrl' => '/test'
],
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
'errorHandler' => [
'errorAction' => 'site/error',
],
],
'params' => $params,
];
Код: Выделить всё
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
1. Переносим index.php из /backend/web на одну папку назад (т.е прямо в backend)
2. Изменяем содержимое файла на:
Код: Выделить всё
<?php
defined('YII_DEBUG') or define('YII_DEBUG', false);
defined('YII_ENV') or define('YII_ENV', 'prod');
require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
require(__DIR__ . '/../common/config/bootstrap.php');
require(__DIR__ . '/config/bootstrap.php');
$config = yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/../common/config/main.php'),
require(__DIR__ . '/../common/config/main-local.php'),
require(__DIR__ . '/config/main.php'),
require(__DIR__ . '/config/main-local.php')
);
$application = new yii\web\Application($config);
$application->run();
Код: Выделить всё
<?php
$params = array_merge(
require(__DIR__ . '/../../common/config/params.php'),
require(__DIR__ . '/../../common/config/params-local.php'),
require(__DIR__ . '/params.php'),
require(__DIR__ . '/params-local.php')
);
return [
'id' => 'app-backend',
'basePath' => dirname(__DIR__),
'controllerNamespace' => 'backend\controllers',
'bootstrap' => ['log'],
'modules' => [],
'components' => [
'user' => [
'identityClass' => 'common\models\User',
'enableAutoLogin' => true,
],
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
//'suffix' => '.html',
'rules' => [
'' => 'site/index',
'<action>'=>'site/<action>',
],
],
'assetManager' => [
'basePath' => '@webroot/web/assets',
'baseUrl' => '@web/web/assets'
],
'request' => [
'baseUrl' => '/test/backend'
],
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
'errorHandler' => [
'errorAction' => 'site/error',
],
],
'params' => $params,
];
Код: Выделить всё
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
Frontend: http://localhost/test
Backend: http://localhost/test/backend
Все работает включая ссылки и стили. Ругайте если что не так )))
-
- Сообщения: 5
- Зарегистрирован: 2014.10.29, 21:29
Re: [РЕШЕНО] Убрать /frontend/web/ из строки адреса
Заметил что не работает дебаггер, вместо панели вижу "Bad Request (#400): Missing required parameters: tag" и соответственно если меняю в конфиге 'enablePrettyUrl' => false, то дебаггер панель работает нормально. Есть идея в чем может быть дело и не бага ли это?
Re: [РЕШЕНО] Убрать /frontend/web/ из строки адреса
а где у вас коннект к базе данных?:)
Re: [РЕШЕНО] Убрать /frontend/web/ из строки адреса
Почему нельзя в офф. документации выложить правильный пример htaccess . Если это настолько обсуждаемый вопрос на всех форумах ? Для бэйсика и адванседа.
Download TV Series in HD http://serialsfree.net/
-
- Сообщения: 12
- Зарегистрирован: 2015.01.26, 16:50
Re: [РЕШЕНО] Убрать /frontend/web/ из строки адреса
Вопрос такой. Сделал в корне сайта .htaccess такой:
в самой папке web такой:
сайт завелся, только когда ходиш по ссылкам - всегда главная страница, хотя сама урл меняется
конфиг такой:
если в урл добавлять все тот же web - то все ок.
что нужно изменить?
Код: Выделить всё
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
Код: Выделить всё
RewriteEngine On RewriteBase /
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule . index.php
конфиг такой:
Код: Выделить всё
...
'db' => require(__DIR__ . '/db.php'),
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'<alias:home|feedback|login|logout>' => 'site/<alias>',
],
...
что нужно изменить?
-
- Сообщения: 12
- Зарегистрирован: 2015.01.26, 16:50
Re: [РЕШЕНО] Убрать /frontend/web/ из строки адреса
нужно было добавить baseUrl - заработало
Re: [РЕШЕНО] Убрать /frontend/web/ из строки адреса
Не получается сделать ссылки вида site.ru/about:
Проект advanced на локальном сервере Openserver 5.2.2
выставлен apache 2.4
в настройках доменов Openservera:
site.ru -----> папка домена yii2/advanced
В браузере захожу на сайт так: site.ru
в админку попадаю так: site.ru/admin, но при этом адрес становится таким site.ru/backend/web/index.php/site/login
Когда включаю 'enablePrettyUrl' => true, то все работает, и ссылки вида site.ru//frontend/web/index.php/about
но мне нужно убрать frontend/web из адреса и имя скрипта.
Когда ставлю 'showScriptName' => false, ссылки становятся нужного вида site.ru/contact но при переходах по ссылкам вылетает:
"Object not found!
The requested URL was not found on this server. The link on the referring page seems to be wrong or outdated. Please inform the author of that page about the error.
If you think this is a server error, please contact the webmaster.
Error 404"
Вот мои настройки:
файл frontend/config/main.php
мой .htaccess в frontend/web:
.htaccess в advanced:
Что я упустил?
Проект advanced на локальном сервере Openserver 5.2.2
выставлен apache 2.4
в настройках доменов Openservera:
site.ru -----> папка домена yii2/advanced
В браузере захожу на сайт так: site.ru
в админку попадаю так: site.ru/admin, но при этом адрес становится таким site.ru/backend/web/index.php/site/login
Когда включаю 'enablePrettyUrl' => true, то все работает, и ссылки вида site.ru//frontend/web/index.php/about
но мне нужно убрать frontend/web из адреса и имя скрипта.
Когда ставлю 'showScriptName' => false, ссылки становятся нужного вида site.ru/contact но при переходах по ссылкам вылетает:
"Object not found!
The requested URL was not found on this server. The link on the referring page seems to be wrong or outdated. Please inform the author of that page about the error.
If you think this is a server error, please contact the webmaster.
Error 404"
Вот мои настройки:
файл frontend/config/main.php
Код: Выделить всё
<?php
$params = array_merge(
require(__DIR__ . '/../../common/config/params.php'),
require(__DIR__ . '/../../common/config/params-local.php'),
require(__DIR__ . '/params.php'),
require(__DIR__ . '/params-local.php')
);
return [
'id' => 'app-frontend',
'basePath' => dirname(__DIR__),
'language'=>'ru-RU',
'bootstrap' => ['log'],
'controllerNamespace' => 'frontend\controllers',
'components' => [
'user' => [
'identityClass' => 'common\models\User',
'enableAutoLogin' => true,
],
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
'errorHandler' => [
'errorAction' => 'site/error',
],
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
//'suffix' => '.html',
'rules' => [
'' => 'site/index',
'<action>'=>'site/<action>',
],
],
'assetManager' => [
'basePath' => '@webroot/assets',
'baseUrl' => '@web/assets'
],
'request' => [
'baseUrl' => ''
],
],
'params' => $params,
];
Код: Выделить всё
# Если это папка или файл, открываем его
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# В противном случае перенаправляем на index.php
RewriteRule . index.php
Код: Выделить всё
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
</IfModule>
<IfModule mod_rewrite.c>
# deal with admin first
RewriteCond %{REQUEST_URI} ^/(admin)
RewriteRule ^admin/assets/(.*)$ backend/web/assets/$1 [L]
RewriteRule ^admin/css/(.*)$ backend/web/css/$1 [L]
RewriteCond %{REQUEST_URI} !^/backend/web/(assets|css)/
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>
-
- Сообщения: 167
- Зарегистрирован: 2015.06.10, 10:43
Re: [РЕШЕНО] Убрать /frontend/web/ из строки адреса
А в настройках OpenServer'а домен кажется лучше по-другому создать.
Ну например, так: домен - site.ru, папка домена - site.ru\www\frontend\web
Это проще, чем такой .htaccess и много правил. Из .htaccess можно только в админку направлять...
Например:
На продакшене тоже корень для сайта укажете как в настройках OpenServera
Ну например, так: домен - site.ru, папка домена - site.ru\www\frontend\web
Это проще, чем такой .htaccess и много правил. Из .htaccess можно только в админку направлять...
Например:
Код: Выделить всё
...
RewriteCond %{HTTP_HOST} ^(site.ru/admin)$ [NC]
RewriteCond %{REQUEST_URI} !^/backend/web
RewriteRule (.*) backend/web/$1
...
Re: [РЕШЕНО] Убрать /frontend/web/ из строки адреса
попробовал, в frontend'е работает но с 'showScriptName' => true, а в админку не попадает.А в настройках OpenServer'а домен не проще создать?
Ну например, так: домен - site.ru, папка домена - site.ru\www\frontend\web
Это проще, чем такой .htaccess и много правил. Из .htaccess можно только в админку направлять...
Например:
КОД: ВЫДЕЛИТЬ ВСЁ
...
RewriteCond %{HTTP_HOST} ^(site.ru/admin)$ [NC]
RewriteCond %{REQUEST_URI} !^/backend/web
RewriteRule (.*) backend/web/$1
...
На продакшене тоже корень для сайта укажете как в настройках OpenServera
Если у меня корневая директория будет в site.ru/frontend/web , вопрос: .htaccess разве сможет перенаправить меня на два уровня выше?
Последний раз редактировалось malivadim 2015.11.22, 10:06, всего редактировалось 1 раз.
-
- Сообщения: 167
- Зарегистрирован: 2015.06.10, 10:43
Re: [РЕШЕНО] Убрать /frontend/web/ из строки адреса
Ну вообще-то да, не сможет. Тогда либо для админки тоже создавать домен в OpenServer. Либо описывать правила в корневом .htaccess
-
- Сообщения: 167
- Зарегистрирован: 2015.06.10, 10:43
Re: [РЕШЕНО] Убрать /frontend/web/ из строки адреса
У меня админка на поддомене и я имею такой .htaccess - переделать под Ваши нужды, думаю не сложно:
Этот - лежит в корне, и в frontend и в backend лежат соответственно файлы:
Код: Выделить всё
# Запросы на админку
RewriteCond %{HTTP_HOST} ^admin\.(.*)$ [NC]
RewriteCond %{REQUEST_URI} !^/backend/web
RewriteRule (.*) backend/web/$1
# Запросы на основной сайт
RewriteCond %{HTTP_HOST} ^(site\.ru)$
RewriteCond %{REQUEST_URI} !^/frontend/web
RewriteRule (.*) frontend/web/$1
Код: Выделить всё
Order Allow,Deny
Allow from all
AddDefaultCharset utf-8
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
Re: [РЕШЕНО] Убрать /frontend/web/ из строки адреса
Спасибо! Пригодится. Пробовал на поддомене админку(admin.site.ru), получается.
Но решил сделать site.ru/admin.
Только для того чтобы в админке все работало (ссылки вида: site.ru/admin/users/index) нужно добавить
'request' => [
'baseUrl' => '/admin'
],
Но решил сделать site.ru/admin.
Только для того чтобы в админке все работало (ссылки вида: site.ru/admin/users/index) нужно добавить
'request' => [
'baseUrl' => '/admin'
],
Re: [РЕШЕНО] Убрать /frontend/web/ из строки адреса
В общем проблема решилась. Я .htaccess поместил оказывается не в frontent(backend)/web, а просто в frontend(backend).
Re: [РЕШЕНО] Убрать /frontend/web/ из строки адреса
Добрый день!
Утром была проблема с отправкой почты (форма обратной связи), однако как оказалось проблема совсем была не в этом. Форма исправно работала, только никто не знал об этом. А суть была в .htaccess.
Есть ряд хостингов, в т.ч. которым я пользуюсь, у них нельзя разместить сайты в папку, отличную от www. На сайте того хостинга есть пример .htaccess, который я по простоте душевной решил себе скопировать. Т.к. хотелось делать локально точно также, как потом будет на хостинге.
Вот тот самый .htaccess
Локально, на Опен сервере это не работает. Помогло решение (вычитал в этой теме) - перенести индексный файл из папки web в корень сайта. У меня шаблон - basic. туда же в корень сайта добавил новый htaccess (тоже нашел в этой же теме):
Нюансы:
- Пришлось в файле AppAsset.php изменить строки:
и пути к картинкам прописывать по типу: web/img/logo.png. Все работает. Надеюсь. Просьба, если в этих действиях кроется ошибка, подскажите. Если нормально, может кому-то пригодится, кто также мучился
Утром была проблема с отправкой почты (форма обратной связи), однако как оказалось проблема совсем была не в этом. Форма исправно работала, только никто не знал об этом. А суть была в .htaccess.
Есть ряд хостингов, в т.ч. которым я пользуюсь, у них нельзя разместить сайты в папку, отличную от www. На сайте того хостинга есть пример .htaccess, который я по простоте душевной решил себе скопировать. Т.к. хотелось делать локально точно также, как потом будет на хостинге.
Вот тот самый .htaccess
Код: Выделить всё
DirectoryIndex /public/index.php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.+) $1 [L]
RewriteCond %{DOCUMENT_ROOT}/public%{REQUEST_URI} -f
RewriteRule ^(.+) /public/$1 [L]
Код: Выделить всё
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
- Пришлось в файле AppAsset.php изменить строки:
Код: Выделить всё
public $basePath = '@webroot/web';
public $baseUrl = '@web/web';
Последний раз редактировалось maxkp 2016.01.01, 13:43, всего редактировалось 1 раз.
Re: [РЕШЕНО] Убрать /frontend/web/ из строки адреса
Переименуйте папку web в www и пользуйтесь.maxkp писал(а):у них нельзя разместить сайты в папку, отличную от www.
Re: [РЕШЕНО] Убрать /frontend/web/ из строки адреса
В принципе так можно, делал. Но бывают случаи когда на одном хостинге размещают более одного проекта. Ну или основной сайт и какие-то поддомены, для тестов (экспериментов), кому что угодно. В моем случае хостинг предлагает структуру example.com/www/. В папке www размещается содержимое сайта, который доступен по ссылкеElisDN писал(а):Переименуйте папку web в www и пользуйтесь.maxkp писал(а):у них нельзя разместить сайты в папку, отличную от www.
Код: Выделить всё
http://example.com
Код: Выделить всё
http://site2.example.com
Re: [РЕШЕНО] Убрать /frontend/web/ из строки адреса
Тоже только изучаю yii2 (перешл с 1го)
Для себя делаю такую структуру проекта.
сам сайт лежит в папке /home/sites/example.com/www
т.е если в папку www положить file.php то он извне будет доступен как example.com/file.php
Значит залил я advanced на хостинг в корень (в папку www) и получилась такая структура
- api
- backend
- console
- common
- enviroments
- frontend
.....
.htaccess
в самом htaccess прописано пока что так:
соответственно если зайти на example.com - то запускается скрипт www/frontend/web/index.php
если зайти example.com/myadmin - то www/backend/web/index.php
еще будет АПИ, для него создадуться новые правила в htaccess
Чтобы админка открывалась как надо в backend/config/main.php прописано так
Вроде пока все, можно сказать это первичные настройки. Если что-то делаю не так - поправьте ) Хочется сразу продуманную структуру сделать чтоб при росте проекта не переделывать.
Для себя делаю такую структуру проекта.
сам сайт лежит в папке /home/sites/example.com/www
т.е если в папку www положить file.php то он извне будет доступен как example.com/file.php
Значит залил я advanced на хостинг в корень (в папку www) и получилась такая структура
- api
- backend
- console
- common
- enviroments
- frontend
.....
.htaccess
в самом htaccess прописано пока что так:
Код: Выделить всё
Options FollowSymLinks
AddDefaultCharset utf-8
<IfModule mod_rewrite.c>
RewriteEngine On
# the main rewrite rule for the frontend application
RewriteCond %{REQUEST_URI} !^/(backend/web|myadmin)
RewriteRule !^frontend/web /frontend/web%{REQUEST_URI} [L]
# redirect to the page without a trailing slash (uncomment if necessary)
#RewriteCond %{REQUEST_URI} ^/admin/$
#RewriteRule ^(admin)/ /$1 [L,R=301]
# the main rewrite rule for the backend application
RewriteCond %{REQUEST_URI} ^/myadmin
RewriteRule ^myadmin(.*) /backend/web/$1 [L]
# if a directory or a file of the frontend application exists, use the request directly
RewriteCond %{REQUEST_URI} ^/frontend/web
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward the request to index.php
RewriteRule . /frontend/web/index.php [L]
# if a directory or a file of the backend application exists, use the request directly
RewriteCond %{REQUEST_URI} ^/backend/web
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward the request to index.php
RewriteRule . /backend/web/index.php [L]
RewriteCond %{REQUEST_URI} \.(htaccess|htpasswd|svn|git)
RewriteRule \.(htaccess|htpasswd|svn|git) - [F]
</IfModule>
соответственно если зайти на example.com - то запускается скрипт www/frontend/web/index.php
если зайти example.com/myadmin - то www/backend/web/index.php
еще будет АПИ, для него создадуться новые правила в htaccess
Чтобы админка открывалась как надо в backend/config/main.php прописано так
Код: Выделить всё
return [
'id' => 'app-backend',
'basePath' => dirname(__DIR__),
'controllerNamespace' => 'backend\controllers',
'bootstrap' => ['log'],
'modules' => [],
'components' => [
'request' => [
'csrfParam' => '_csrf-backend',
'baseUrl' => '/myadmin'
],
'user' => [
'identityClass' => 'common\models\User',
'enableAutoLogin' => true,
'identityCookie' => ['name' => '_identity-backend', 'httpOnly' => true],
],
'session' => [
// this is the name of the session cookie used for login on the backend
'name' => 'advanced-backend',
],
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
'errorHandler' => [
'errorAction' => 'site/error',
],
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
],
],
'assetManager' => [
'basePath' => '@webroot/assets',
'baseUrl' => '@web/assets'
],
],
'params' => $params,
];
Вроде пока все, можно сказать это первичные настройки. Если что-то делаю не так - поправьте ) Хочется сразу продуманную структуру сделать чтоб при росте проекта не переделывать.