Вопрос по .htaccess – Yii: .htaccess и urlManager для отдельного бэкэнда и внешнего интерфейса

6

У меня не получается настроить мой .htaccess и urlManager в проекте Yii, чтобы иметь внешний интерфейсhttp://www.example.com и бэкэнд вhttp://www.example.com/backend со следующей структурой папок. Любая помощь приветствуется. Благодарю.

/assets
/backend
   /controllers
   /config
      main.php
   /models
   /views
/common
   /models
/protected
   /controllers
   /config
      main.php
   /models
   /views 
.htaccess
backend.php
index.php

Solution: после огромной помощи @ bool.dev все, что она работает, поэтому я добавляю сюда каждый необходимый финальный файл. Во внешнем интерфейсе я использую формат пути для URL и скрываю index.php

/backend/config/main.php

$backend=dirname(dirname(__FILE__));
Yii::setPathOfAlias('backend', $backend);
return array(
'basePath' => $backend,

'controllerPath' => $backend.'/controllers',
'viewPath' => $backend.'/views',
'runtimePath' => $backend.'/runtime',

...);

/protected/config/main.php

'urlManager'=>array(
    'urlFormat'=>'path',
    'showScriptName'=>false,
    'rules'=>array(
            '<controller:\w+>/<id:\d+>'=>'<controller>/view',
            '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
            '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
    ),
),

.htaccess

Options +FollowSymLinks
IndexIgnore */*
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /yii/example/
RewriteRule backend backend\.php [T=application/x-httpd-php]

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php
</IfModule>

backend.php

$yii=dirname(__FILE__).'/../../yii/framework/yii.php';
$config=dirname(__FILE__).'/backend/config/main.php';
require_once($yii);
Yii::setPathOfAlias('common', dirname(__FILE__).DIRECTORY_SEPARATOR.'common');
Yii::createWebApplication($config)->run();

index.php

$yii=dirname(__FILE__).'/../../yii/framework/yii.php';
$config=dirname(__FILE__).'/protected/config/main.php';
require_once($yii);
Yii::setPathOfAlias('common', dirname(__FILE__).DIRECTORY_SEPARATOR.'common');
Yii::createWebApplication($config)->run();
Разве у вас нет отдельного htaccess для бэкэнда внутри папки бэкэнда ?, скажем, создайте внешний htaccess для example.com и создайте другой htaccess внутри бэкэнда, например, com.com/backend bool.dev
мой последний комментарий может быть неуместным. поэтому ваша главная задача - как сопоставить / route example.com/backend с папкой «backend»? bool.dev
Я хотел следовать структуре каталогов сайта проекта Yiiyiiframework.com/wiki/155/… описанный Цян. Puigcerber
Можете ли вы сказать мне, почему вы не сделали бэкэнд модуля? bool.dev
Да, у меня есть два сценария входа:index.php для внешнего интерфейса иbackend.php для бэкэнда. Внутри папки бэкэнд и защищенный у меня.htaccess сdeny from all. Puigcerber

Ваш Ответ

1   ответ
6

эта статья вики от ЦянВы можете внести следующие изменения, и это должно работать:

// backend.php:
require('path/to/yii.php');
Yii::createWebApplication('backend/config/main.php')->run();

Затем в конфигурации вашего бэкэнда (т.е.backend/config/main.php):

$backend=dirname(dirname(__FILE__));
$frontend=dirname($backend);
Yii::setPathOfAlias('backend', $backend);

return array(
    'basePath' => $backend,

    'controllerPath' => $backend.'/controllers',
    'viewPath' => $backend.'/views',
    'runtimePath' => $backend.'/runtime',

    'import' => array(
        'backend.models.*',
    ),
    // ... other configurations ...
);

Но чтобы это работало, нам нужен основной .htaccess для маршрутизации example.com/backend в backend.php, который я еще не выяснил.

Edit:
Просто разобрался:

RewriteEngine On
RewriteBase /projectroot/
RewriteRule backend backend\.php [T=application/x-httpd-php]

RewriteBase было важно для меня, так какbackend.php не был найден, когда мне не дали правильныйprojectrootв основном это должен быть каталог, в котором у вас есть скрипт входаbackend.php.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededcontinue this discussion in chat Puigcerber
Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededOptions +Indexes +FollowSymLinksError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Puigcerber

Похожие вопросы