Первый раз когда поставил Yii 2 доступ к сайту был http://site.com/web/
Для того что бы решить эту проблему есть 4 варианта.
1. Самый простой для меня способ — это перенести содержимое фреймворка в папку yii, т.е. выглядеть должно вот так:
Открываем файл index.php и в нем меняем путь к файлам фреймфорка:
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php // comment out the following two lines when deployed to production defined('YII_DEBUG') or define('YII_DEBUG', true); defined('YII_ENV') or define('YII_ENV', 'dev'); require(__DIR__ . '/yii/vendor/autoload.php'); require(__DIR__ . '/yii/vendor/yiisoft/yii2/Yii.php'); $config = require(__DIR__ . '/yii/config/web.php'); (new yii\web\Application($config))->run(); |
Так же не забываем закрыть от всех папку /yii/, создаем там файлик .htaccess и в нем прописываем deny from all
Все, теперь у вам сайт доступен без приписки /web/, а к файлам фреймфорка никто доступ не получит
2. Второй способ основан на правильном составлении файла .htaccess:
1 2 3 4 5 6 7 8 9 10 11 12 |
Options +FollowSymLinks IndexIgnore */* RewriteEngine on # if request dosn't start with web add it RewriteCond %{REQUEST_URI} !^/(web) RewriteRule (.*) /web/$1 # if file or directory dosn't exists go to /web/index.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /web/index.php |
3. Можно запустить все на ngnix и настроить перенаправление там.
4. Как правило на сервере файлы сайта хранятся в папке www или http или htdocs, так вот можно закинуть файлы фрейморка рядом с этой папкой, придется переписать пути так же как в 1 варианте.