Cakephp 2.4.5默认控制器未加载

时间:2016-07-19 07:32:28

标签: php cakephp cakephp-2.4

我是cakephp中的新手,尝试将默认控制器加载为Pages

这是我的路线:

  

Router :: redirect('/',array('controller'=>'pages','action'=>'display'));

     

Router :: connect('/ pages / **',array('controller'=>'pages','action'=>'display'));

当我运行http://localhost/project/index.php时,其工作正常,但尝试http://localhost/project/其未加载默认控制器(Pages)< / p>

没有htaccess&amp;与htaccess同样的问题。

这是错误:

  

无法找到控制器类ProjectController。

错误:

  

找不到请求的地址'/project/index.php/project/'   这个服务器。

3 个答案:

答案 0 :(得分:0)

您正在子目录中运行,因此您应该设置RewriteBase:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase /project/
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ /project/index.php?url=$1 [QSA,L] 
</IfModule

答案 1 :(得分:0)

根据cakephp手册:

http://book.cakephp.org/3.0/en/development/routing.html#redirect-routing

你应该试试

Router::scope('/', function ($routes) {
$routes->redirect(
    '/home/*',
    ['controller' => 'Articles', 'action' => 'view'],
    ['persist' => true]
    // Or ['persist'=>['id']] for default routing where the
    // view action expects $id as an argument.
);
})

而不是Router :: redirect.You应该尝试一次此方法,可能会解决问题。

答案 2 :(得分:0)

已解决

在app控制器中添加了baseUrl:

function beforeRender(){
  $this->set('baseUrl', 'http://'.$_SERVER['SERVER_NAME'].Router::url('/'));
}

从Core.php中删除了App.baseUrl:

Configure::write('App.baseUrl', env('SCRIPT_NAME'));

现在它的工作正常:     http://localhost/app/