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>'
],
],
],
];