Хостинг дает доступ к ftp и phpMyAdmin. Если зайти на ftp, там просто пустая папка сайта. Скачал yii-basic-app-2.0.14.tgz. (http://www.yiiframework.com/download/) Извлек файлы из архива. Скопировал все извлеченные файлы на ftp. Пользуюсь руководством http://www.yiiframework.com/doc-2.0/guide-tutorial-shared-hosting Добавил в папку web файл .htaccess: Код (Text): Options +FollowSymLinks IndexIgnore */* RewriteEngine on # 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 В руководстве говорится, что нужно переименовать папку web со входным скриптом index.php либо в www, либо в public_html, либо в htdocs. Но это переименование ничего не дает. На одном из хостингов нашел такой способ: В корне сайта создается .htaccess, который перенаправляет в папку web, а там другой .htaccess, код которого находится выше. Заработало, только вот в адресной строке постоянно светится директория web : Потом на видео у какого-то турка я увидел рекомендацию, что нужно перенести входной index.php скрипт в корень сайта и изменить пути с Код (Text): require __DIR__ . '/../vendor/autoload.php'; require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php'; $config = require __DIR__ . '/../config/web.php'; на Код (Text): require __DIR__ . '/vendor/autoload.php'; require __DIR__ . '/vendor/yiisoft/yii2/Yii.php'; $config = require __DIR__ . '/config/web.php'; Всё заработало так как надо, но вот меня гложут сомнения правильно ли так делать? Но иначе у меня не получилось сделать
Ну есть разные хостинги. Есть хостинги, которые позволяют выше Document Root писать или менять Document Root, тогда самый крутяк, просто натравливаешь на web или переименовываешь в какой-нибудь public_html. Если хостинг не позволяет, есть хак htaccess, который перекидывает все запросы на web: https://github.com/ilopX/yii2-basic-htaccess Трюк с index.php мне не нравится, потому что yii изначально предназначен лежать выше document root, и защиты от прямого запуска поэтому ни в одном файле нету. Поэтому не хорошо,если в веб-доступной папке окажутся скрипты
Сделал как рекомендуют. Не получилось, теперь при попытке перейти, к примеру по http://tpr.hostenko.com/site/index или http://tpr.hostenko.com/index выдает 404-страница не найдена. Удалил шаблон, залил новый шаблон Yii-basic, опять попробовал - опять та же ошибка.
Получилось. Рецепт: .htaccess в корне сайта : Код (Text): 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 .htaccess в папке web : Код (Text): Options +FollowSymLinks IndexIgnore */* RewriteEngine on # 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 web.php в папке config добавить в request: Код (Text): 'baseUrl' => '',