在开启URL_ROUTER_ON的情况下,根据手册设置了多层控制器,
路径: Home/Controller/News/NewsReadController.class.php
访问url: /home/news/read/1.html
无法找到action.
读了源码情况如下:
Dispatcher.class.php 185行:
if('' != $_SERVER['PATH_INFO'] && (!C('URL_ROUTER_ON') || !Route::check()) ){ // 检测路由规则
前面条件不成了进入 Route::check();有2种情况:
1.Route::check(); 在config的 URL_ROUTE_RULES 中若没配置,此url无法找到action。
2.Route::check(); 若匹配到了,执行parseRule 时,返回都为true。导致Dispatcher不进行控制器层次判断。不执行以下代码
if(C('CONTROLLER_LEVEL')>1){// 控制器层次
$_GET[$varController] = implode('/',array_slice($paths,0,C('CONTROLLER_LEVEL')));
$paths = array_slice($paths, C('CONTROLLER_LEVEL'));
}else{
$_GET[$varController] = array_shift($paths);
}
也找不到action。求如何破。。。是我RL_ROUTE_RULES没设置对么?
QQ截图20140315123929.png
( 3.74 KB 下载:5 次 )
最佳答案
