'DEFAULT_MODULE' => 'Home', //默认模块
'DEFAULT_CONTROLLER' => 'Index',//默认控制器
'DEFAULT_ACTION' => 'getMember', // 默认操作名称
直接localhost访问没有问题但是直接在浏览器中输入http://localhost/getMember.html 这时候问题就出现了

查看源代码时发现ThinkPHP\Library\Think\Dispatcher.class.php
/**
* 获得实际的控制器名称
* @access private
* @return string
*/
static private function getController($var) {
$controller = (!empty($_GET[$var])? $_GET[$var]:C('DEFAULT_CONTROLLER'));
unset($_GET[$var]);
if($maps = C('URL_CONTROLLER_MAP')) {
if(isset($maps[strtolower($controller)])) {
// 记录当前别名
define('CONTROLLER_ALIAS',strtolower($controller));
// 获取实际的控制器名
return ucfirst($maps[CONTROLLER_ALIAS]);
}elseif(array_search(strtolower($controller),$maps)){
// 禁止访问原始控制器
return '';
}
}
if(C('URL_CASE_INSENSITIVE')) {
// URL地址不区分大小写
// 智能识别方式 user_type 识别到 UserTypeController 控制器
$controller = parse_name($controller,1);
}
return strip_tags(ucfirst($controller));
}
这里却没有检测设定的默认控制器,请问这是怎么回事情。按照理解应该是设定了默认的模块、控制器、操作时,如果什么都不输入则显示默认的,当只有一项时,既然检查了控制器,就应该判断控制器是否存在,如果不存在则返回默认控制器,将已获取的name传递给操作,或者这个规则应该这样写,先检查默认模块的默认控制器中是否存在该操作,如果不存在,则检查默认模块中是否有该控制器,如没有,检查是否为模块。不知道我这个逻辑对系统的影响是否较小,请各位亲指正最佳答案
