За последние 24 часа нас посетили 22352 программиста и 1149 роботов. Сейчас ищут 640 программистов ...

Yii2 залить на хостинг?

Тема в разделе "Yii", создана пользователем SpikePHP, 9 мар 2018.

  1. SpikePHP

    SpikePHP Активный пользователь

    С нами с:
    6 май 2015
    Сообщения:
    130
    Симпатии:
    23
    Хостинг дает доступ к 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):
    1. Options +FollowSymLinks
    2. IndexIgnore */*
    3.  
    4. RewriteEngine on
    5.  
    6. # if a directory or a file exists, use it directly
    7. RewriteCond %{REQUEST_FILENAME} !-f
    8. RewriteCond %{REQUEST_FILENAME} !-d
    9.  
    10. # otherwise forward it to index.php
    11. RewriteRule . index.php
    В руководстве говорится, что нужно переименовать папку web со входным скриптом index.php либо в www, либо в public_html, либо в htdocs. Но это переименование ничего не дает.

    На одном из хостингов нашел такой способ:
    В корне сайта создается .htaccess, который перенаправляет в папку web, а там другой .htaccess, код которого находится выше.

    Заработало, только вот в адресной строке постоянно светится директория web :
    [​IMG]

    Потом на видео у какого-то турка я увидел рекомендацию, что нужно перенести входной index.php скрипт в корень сайта и изменить пути с
    Код (Text):
    1. require __DIR__ . '/../vendor/autoload.php';
    2. require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php';
    3. $config = require __DIR__ . '/../config/web.php';
    на
    Код (Text):
    1. require __DIR__ . '/vendor/autoload.php';
    2. require __DIR__ . '/vendor/yiisoft/yii2/Yii.php';
    3.  
    4. $config = require __DIR__ . '/config/web.php';
    Всё заработало так как надо, но вот меня гложут сомнения правильно ли так делать? Но иначе у меня не получилось сделать
     
    #1 SpikePHP, 9 мар 2018
    Последнее редактирование: 9 мар 2018
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    Ну есть разные хостинги. Есть хостинги, которые позволяют выше Document Root писать или менять Document Root, тогда самый крутяк, просто натравливаешь на web или переименовываешь в какой-нибудь public_html. Если хостинг не позволяет, есть хак htaccess, который перекидывает все запросы на web: https://github.com/ilopX/yii2-basic-htaccess

    Трюк с index.php мне не нравится, потому что yii изначально предназначен лежать выше document root, и защиты от прямого запуска поэтому ни в одном файле нету. Поэтому не хорошо,если в веб-доступной папке окажутся скрипты
     
    SpikePHP нравится это.
  3. SpikePHP

    SpikePHP Активный пользователь

    С нами с:
    6 май 2015
    Сообщения:
    130
    Симпатии:
    23
    Сделал как рекомендуют. Не получилось, теперь при попытке перейти, к примеру по http://tpr.hostenko.com/site/index или http://tpr.hostenko.com/index выдает 404-страница не найдена. Удалил шаблон, залил новый шаблон Yii-basic, опять попробовал - опять та же ошибка.
     
  4. SpikePHP

    SpikePHP Активный пользователь

    С нами с:
    6 май 2015
    Сообщения:
    130
    Симпатии:
    23
    Получилось. Рецепт:
    .htaccess в корне сайта :
    Код (Text):
    1. Options +FollowSymLinks
    2. IndexIgnore */*
    3. RewriteEngine on
    4.  
    5. RewriteCond %{REQUEST_URI} !^/(web)
    6. RewriteRule ^assets/(.*)$ /web/assets/$1 [L]
    7. RewriteRule ^css/(.*)$ web/css/$1 [L]
    8. RewriteRule ^js/(.*)$ web/js/$1 [L]
    9. RewriteRule ^images/(.*)$ web/images/$1 [L]
    10. RewriteRule (.*) /web/$1
    11.  
    12. RewriteCond %{REQUEST_FILENAME} !-f
    13. RewriteCond %{REQUEST_FILENAME} !-d
    14. RewriteRule . /web/index.php
    .htaccess в папке web :
    Код (Text):
    1. Options +FollowSymLinks
    2. IndexIgnore */*
    3.  
    4. RewriteEngine on
    5.  
    6. # if a directory or a file exists, use it directly
    7. RewriteCond %{REQUEST_FILENAME} !-f
    8. RewriteCond %{REQUEST_FILENAME} !-d
    9.  
    10. # otherwise forward it to index.php
    11. RewriteRule . index.php
    web.php в папке config добавить в request:
    Код (Text):
    1.             'baseUrl' => '',