Страницы

Поиск по вопросам

суббота, 11 января 2020 г.

Убрать “web” из адреса в Yii2

#php #yii2 #apache


На хостинге установлен yii2-basic, установлен не в корень, а в htdocs/basic.  

Хочу http://домен/basic/web/about заменить на http://домен/basic/about.

На данный момент последний адрес перенаправляет на главную страницу.  

В basic лежит следующий .htaccess:


    Options +FollowSymlinks
    RewriteEngine On



    RewriteCond %{REQUEST_URI} ^/.*
    RewriteRule ^(.*)$ web/$1 [L]

    RewriteCond %{REQUEST_URI} !^/web/
    RewriteCond %{REQUEST_FILENAME} !-f [OR]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^.*$ web/index.php



В basic/web тоже лежит .htaccess:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php


В config/web.php:

'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        '' => 'site/index',
        ''=>'site/',
    ],
],


В 'request' добавление 'baseUrl' => '' даёт 404.
    


Ответы

Ответ 1



Сам не раз сталкивался с клиентами, у которых был обычный хостинг, где не было возможности прописать корневую директорию. Вот как я решал данную проблему: 1) В корне проекта создаем .htaccess с содержимым: Options +FollowSymlinks RewriteEngine On RewriteCond %{REQUEST_URI} ^/.* RewriteRule ^(.*)$ basic/web/$1 [L] RewriteCond %{REQUEST_URI} !^/basic/web/ RewriteCond %{REQUEST_FILENAME} !-f [OR] RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^.*$ basic/web/index.php 2) В папке web создаем .htaccess с содержимым: RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php 3) Далее открываем файл config/web.php и делаем следующее: Находим строчку 'request' => [ 'cookieValidationKey' => ......., ], И добавляем в массив строчку 'baseUrl' => '' 'request' => [ 'cookieValidationKey' => ......., 'baseUrl' => '', ], 4) Заранее забегаю вперед и пишу, как убрать ещё и index.php Находим строчку в файле config/web.php 'urlManager' => [ ........ //остальная часть кода ], И добавляем в массив строчку 'showScriptName' => false 'urlManager' => [ 'showScriptName' => false, ........ //остальная часть кода ], Данная инструкция уместна для структуры папок, указанной Вами. Обычно проект заливают в корень сайта. В таком случае убираем в первом пункте basic и наслаждаемся жизнью :)

Комментариев нет:

Отправить комментарий