当 core.php debug 设置为 1 或 2 并且我浏览到 cakephp 站点的根目录时,我得到了预期的结果,提供的页面是正确的,即 PagesController default() action -> home.ctp
但是,如果我将 debug 更改为 0,则会出现以下错误:
Error: The requested address '/' was not found on this server.
我的 router.php 文件包含:
Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
/**
* ...and connect the rest of 'Pages' controller's urls.
*/
Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));
我尝试删除所有缓存文件并删除 CAKE cookie,并且其他操作在直接访问时按预期工作,例如/user、/groups 等。问题仅在点击根“/”时发生。
我正在使用 cakephp 1.3.4 和 ACL + Auth。
编辑 ** 我包含了 pages_controller.php 中 default() 函数的代码
/**
* Displays a view
*
* @param mixed What page to display
* @access public
*/
function display() {
$path = func_get_args();
$count = count($path);
if (!$count) {
$this->redirect('/');
}
$page = $subpage = $title_for_layout = null;
if (!empty($path[0])) {
$page = $path[0];
}
if (!empty($path[1])) {
$subpage = $path[1];
}
if (!empty($path[$count - 1])) {
$title_for_layout = Inflector::humanize($path[$count - 1]);
}
$this->set(compact('page', 'subpage', 'title_for_layout'));
$this->render(implode('/', $path));
}
最佳答案
好吧,答案简单到令人尴尬:在home.ctp中有以下代码:
if (Configure::read() == 0):
$this->cakeError('error404');
endif;
Configure::read() 默认读取 var debug - 因此如果 debug 设置为 0,它会抛出此错误。
感谢本杰明让我走上正轨。蛋糕很棒,同时也很令人生气,直到您了解基础知识!
关于cakephp 路由 - pages_controller/home.ctp 错误仅在 debug=0 时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3794063/