htaccess advanced, сайт в папке не работает

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
mader
Сообщения: 84
Зарегистрирован: 2015.06.15, 13:44
Откуда: Воронеж

htaccess advanced, сайт в папке не работает

Сообщение mader »

Здравствуйте.
Короче какая-то фигня не могу понять.
есть домен, сайт лежит в папке домена, то есть урл такой
domain.ru/test/

сайт с шаблоном advanced
вообщем все ссылки работают. Только при переходе по урл
domain.ru/test
в адресной строке рисуется
domain.ru/test/frontend/web
на странице отрисовывается layout и 404.
если пишу domain.ru/test/site/index
то нормально работает. по ссылкам тоже нормально переходит все.

вообщем, чет не могу сообразить второй день туплю.
Подскажите гуру программирования!

htaccess

Код: Выделить всё

<IfModule mod_rewrite.c>
    Options -Indexes
    Options +FollowSymlinks
    AddDefaultCharset UTF-8
    RewriteEngine On
</IfModule>

<IfModule mod_rewrite.c>
    RewriteEngine On

    # the main rewrite rule for the frontend application
    RewriteCond %{REQUEST_URI} !^/test/(frontend/web|backend/web|admin)
    RewriteRule ^(.*) /test/frontend/web/$1 [L]

    # redirect to the page without a trailing slash (uncomment if necessary)
    #RewriteCond %{REQUEST_URI} ^/test/admin/$
    #RewriteRule ^(admin)/ /test/$1 [L,R=301]
    # the main rewrite rule for the backend application
    RewriteCond %{REQUEST_URI} ^/test/admin
    RewriteRule ^admin(.*) /test/backend/web/$1 [L]

    # if a directory or a file of the frontend application exists, use the request directly
    RewriteCond %{REQUEST_URI} ^/test/frontend/web
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    # otherwise forward the request to index.php
    RewriteRule . /test/frontend/web/index.php [L]

    # if a directory or a file of the backend application exists, use the request directly
    RewriteCond %{REQUEST_URI} ^/test/backend/web
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    # otherwise forward the request to index.php
    RewriteRule . /test/backend/web/index.php [L]

    RewriteCond %{REQUEST_URI} \.(htaccess|htpasswd|svn|git)
    RewriteRule \.(htaccess|htpasswd|svn|git) - [F]
</IfModule>
slo_nik
Сообщения: 344
Зарегистрирован: 2013.10.07, 19:08

Re: htaccess advanced, сайт в папке не работает

Сообщение slo_nik »

Добрый день.
Если проект лежит в подпапке домена, то надо сделать некоторые настройки в конфигурационном файле frontend/config/main.php (или main-local.php)

Код: Выделить всё

use yii\web\Request;
$baseUrl = str_replace('/web/frontend', '', (new Request)->getBaseUrl());

$config = [
    'components' => [
        'request' => [
            // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
            'cookieValidationKey' => 'oNwD5jmobTudc_nimBMqQ-mMhGOQRl9m',
            'baseUrl' => $baseUrl
        ],
        'urlManager' => [
            'baseUrl' => $baseUrl,
            /* остальные настройки */
        ],
    ],
];
В корне проекта у меня такой .htaccess

Код: Выделить всё

RewriteEngine On

# Handle the case of backend, skip ([S=1]) the following rule, if current matched
RewriteCond %{REQUEST_URI} ^/(test/zadvorki) # это так будет называться админка)))) можете заменить на любое название)))
RewriteRule ^zadvorki(/.*)?$ backend/web/$1 [L]

# handle the case of frontend
RewriteCond %{REQUEST_URI} ^/(test)
RewriteRule ^(.*)$ frontend/web/$1 [L]
При переносе или изменении имени директории в конфиге ничего не надо менять, только в .htaccess название test заменить на новое или убрать, если потребуется.
Ответить