Mam trudności ze skonfigurowaniem moich .htaccess i urlManager w projekcie Yii, aby mieć frontend w http://www.example.com i backend w http://www.example.com/backend z następującą strukturą folderów. Każda pomoc jest mile widziana. Dzięki.Yii: .htaccess i urlManager dla oddzielnego backendu i interfejsu użytkownika
/assets
/backend
/controllers
/config
main.php
/models
/views
/common
/models
/protected
/controllers
/config
main.php
/models
/views
.htaccess
backend.php
index.php
Rozwiązanie: po wielkim pomocą @ bool.dev wszystko to działa, więc dodaję tutaj każdą potrzebną ostateczną pliku. W frontend używam formatu ścieżki adresu URL i ukrycie 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();
czy możesz mi powiedzieć, dlaczego nie zrobiłeś backendu modułu? –
Chciałem śledzić strukturę katalogów witryny projektu Yii http://www.yiiframework.com/wiki/155/the-directory-structure-of-the-yii-project-site/ opisanej przez Qiang. – Puigcerber
Nie powinieneś mieć oddzielnej htaccess dla backendu, wewnątrz folderu backendu ?, powiedz, czy chcesz uzyskać zewnętrzną htaccess dla example.com i utworzyć inny htaccess wewnątrz backendu, na przykład.com/backend –