我是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/' 这个服务器。
答案 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/