yii2 маршрутизация и настройка htaccess

У меня есть следующие каталоги в моем проекте:

  • Проект:
    • внешнийинтерфейс: (это приложение angularjs)
    • бэкэнд: (это продвинутое приложение yii2)
      • бэкенд:
        • контроллеры
        • модели
        • Просмотры
        • web: корень серверной части (index.php)
      • внешний интерфейс:
        • контроллеры
        • модели
        • Просмотры
        • web: корень веб-интерфейса (index.php)

Я хочу указать на бэкэнд (приложение yii2) по следующему URL: http://localhost/Project/backend, тогда как внешний интерфейс (угловой) должен быть корневым, то есть http://localhost/Project. и так далее, я хочу вызвать контроллер api по этому URL: http://localhost/Project/backend/api.

что я пробовал до сих пор:

.htaccess (проект):

Options +FollowSymlinks
RewriteEngine On

RewriteCond %{REQUEST_URI} ^/Project
RewriteRule ^.*$ frontend/backend/web/index.php [L]

RewriteCond %{REQUEST_URI} ^/obeauty/(admin)
RewriteRule ^.*$ backend/backend/web/index.php [L]

.htaccess (проект / бэкэнд):

Options +FollowSymlinks
RewriteEngine On

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

.htaccess (Project / backend / backend):

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php?/$1 [L]

Request.php (Project / backend / common / components):

<?php

namespace common\components;

class Request extends \yii\web\Request {
    public $web;
    public $adminUrl;

    public function getBaseUrl(){
        return str_replace($this->web, "", parent::getBaseUrl()) . $this->adminUrl;
    }

    public function resolvePathInfo(){
        if($this->getUrl() === $this->adminUrl){
            return "";
        }else{
            $pathInfo = parent::resolvePathInfo();
            return $pathInfo == 'index.php' || $pathInfo == 'index.php/' ? 'site/index' : $pathInfo;
        }
    }
}

main.php (Project / backend / backend / config):

<?php

return [
    'id' => 'app-backend',
    'basePath' => dirname(__DIR__),
    'controllerNamespace' => 'backend\controllers',
    'bootstrap' => ['log'],
    'modules' => [],
    'components' => [
        'request' => [
            'csrfParam' => '_csrf-backend',
            'class' => 'common\components\Request',
            'web'=> '/backend/web',
            'adminUrl' => '/backend'
        ],
        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
                'api-create' => 'api/api-create',
                'api' => 'api/api',
                'mobileapi/<action:\w+>' => 'mobileapi/<action>' 
            ],
        ],
    ],
];

0 ответов

Другие вопросы по тегам