проблема с htaccess на yii-advanced

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
SaintRu
Сообщения: 88
Зарегистрирован: 2020.05.13, 11:22
Контактная информация:

проблема с htaccess на yii-advanced

Сообщение SaintRu »

Данную проблему весь день рыл в интернете, но понял что у всех не так настроен хостинг как на beget (или у кого так, то ошибок не возникало)
На хостинге (beget) Yii-advanced ставится так:
все кучей ложится в папку сайта mysite.ru/
в корне делается символическая ссылка

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

ln -s frontend/web public_html
в папке frontend/web делаем символическую ссылку на backend:

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

ln -s ../../backend/web backend
По .htaccess делал два варианта:
в frontend/web:

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

RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ^(www\.)?mysite\.ru$ [NC]
RewriteRule ^(.*)$ index.php?route=$1 [L]

RewriteCond %{HTTP_HOST} ^(www\.)?backend\.mysite\.ru$ [NC]
RewriteCond %{REQUEST_URI} !^/backend/
RewriteRule ^(.*)$ backend/index.php?route=$1 [L]
в backend/web - без htaccess
2 вариант
в frontend/web:

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

RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ^(www\.)?mysite\.ru$ [NC]
RewriteRule ^(.*)$ index.php?route=$1 [L]

RewriteCond %{HTTP_HOST} ^(www\.)?backend\.mysite\.ru$ [NC]
RewriteCond %{REQUEST_URI} !^/backend/
RewriteRule ^(.*)$ backend/$1 [L]
в backend/web:

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

RewriteEngine on
RewriteBase /
RewriteRule ^(.*)$ index.php?route=$1 [L]
А теперь суть.
по основному сайту, что на frontend/web ведет, все работает, все переходы по uri и т.д. и т.п.
а вот по backend, открывается только backend.mysite.ru, все другое backend.mysite.ru/user и т.п. редиректится обратно на backend.mysite.ru
Локально все работало :(

Update:
редирект всегда на '/'
Файл urlManager.php

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

<?php
return [
    'class' => 'yii\web\UrlManager',
    'hostInfo' => $params['backendHostInfo'],
    'baseUrl' => '',
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        '' => 'site/index',
        '<_a:login|logout>' => 'auth/<_a>',

        '<_c:[\w\-]+>' => '<_c>/index',
        '<_c:[\w\-]+>/<id:\d+>' => '<_c>/view',
        '<_c:[\w\-]+>/<_a:[\w-]+>' => '<_c>/<_a>',
        '<_c:[\w\-]+>/<id:\d+>/<_a:[\w\-]+>' => '<_c>/<_a>',
    ],
];
Если в rules заменить первую запись на

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

'' => 'user/index' 
то все ссылки по админке будут переходить на этот новый адрес
Мой старт-ап ;) https://website39.site
marsden
Сообщения: 23
Зарегистрирован: 2019.11.25, 09:28

Re: проблема с htaccess на yii-advanced

Сообщение marsden »

а если прописать DocumentRoot с нормальным указанием на папки frontend/web и backend/web?
бездумный копипаст приводит к безумным результатам
SaintRu
Сообщения: 88
Зарегистрирован: 2020.05.13, 11:22
Контактная информация:

Re: проблема с htaccess на yii-advanced

Сообщение SaintRu »

Поддержка решила так проблему: в urlManager - 'baseUrl' => '/backend', теперь это добавляется в адрес: <сайт>/backend/<акшионы> единственный минус, если в js идет ajax-запрос, на backend, надо вручную добавить /backend а на ПК в разработке убирать :(
Мой старт-ап ;) https://website39.site
Аватара пользователя
Dominus
Сообщения: 892
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: проблема с htaccess на yii-advanced

Сообщение Dominus »

Все запросы ведут на корень проекта

.htaccess ложится в frontend/web и backend/web

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

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . index.php
Этот .htaccess в корень проекта

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

Options FollowSymLinks
AddDefaultCharset utf-8

<IfModule mod_rewrite.c>
    RewriteEngine On

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

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

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

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

    RewriteCond %{REQUEST_URI} \.(htaccess|htpasswd|svn|git)
    RewriteRule \.(htaccess|htpasswd|svn|git) - [F]
</IfModule>
backend/config/main.php

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

//...
return [
    //...
    'homeUrl' => '/admin',
    //...
    'components' => [
        'request' => [
           //...
            'baseUrl' => '/admin'
        ],
        //...
    ],
    //...
    'params' => $params
];
frontend/config/main.php

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

return [
    //...
    'homeUrl' => '/',
    //...
    'components' => [
        'request' => [
           //...
            'baseUrl' => ''
        ],
        //...
    ],
   //...
    'params' => $params
];
Ссылки получаются следующего вида:

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

// frontend
mysite.com

// backend
mysite.com/admin
Именно такая реализация тут: https://github.com/Dominus77/yii2-advanced-start
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!
SaintRu
Сообщения: 88
Зарегистрирован: 2020.05.13, 11:22
Контактная информация:

Re: проблема с htaccess на yii-advanced

Сообщение SaintRu »

Спасибо за наводку
Мой старт-ап ;) https://website39.site
Ответить