thinkphp3.2中已配置:'URL_CASE_INSENSITIVE' => true,对于控制器及操作名大小写都可以,但仍对于模块名的大小写就运行机制出错,
比如:http://www.xxxx.com/Home 这是正常的,但换成http://www.xxxx.com/home就出错,
解决方案如下
修改 View.class.php 文件让大小写共存
替换 parseTemplate
- public function parseTemplate($template='') {
- if(is_file($template)) {
- return $template;
- }
- $depr = C('TMPL_FILE_DEPR');
- $template = str_replace(':', $depr, $template);
- // 获取当前模块
- $module = MODULE_NAME;
- if(strpos($template,'@')){ // 跨模块调用模版文件
- list($module,$template) = explode('@',$template);
- }
- // 获取当前主题的模版路径
- defined('THEME_PATH') or define('THEME_PATH', $this->getThemePath($module));
- // 分析模板文件规则
- if('' == $template) {
- // 如果模板文件名为空 按照默认规则定位
- $template = CONTROLLER_NAME . $depr . ACTION_NAME;
- }elseif(false === strpos($template, $depr)){
- $template = CONTROLLER_NAME . $depr . $template;
- }
- $file = THEME_PATH.$template.C('TMPL_TEMPLATE_SUFFIX');
- if(C('TMPL_LOAD_DEFAULTTHEME') && THEME_NAME != C('DEFAULT_THEME') && !is_file($file)){
- // 找不到当前主题模板的时候定位默认主题中的模板
- $file = dirname(THEME_PATH).'/'.C('DEFAULT_THEME').'/'.$template.C('TMPL_TEMPLATE_SUFFIX');
- }
- //URl 大小写转换
- if(!is_file($file)){
- $file = $this->Get_Url($file);
- if(!is_file($file)){
- $file = $this->Get_Url($file,1);
- }
- }
- return $file;
- }
- private function Get_Url($f,$x=''){
- $a = explode('/',$f);
- $b = count($a)-1;
- foreach ($a as $k => $v){
- if($k == $b){
- if(empty($x)){
- $c .= ucfirst($v).'/';
- }else{
- $c .= strtolower($v).'/';
- }
- }else{
- $c .= $v.'/';
- }
- }
- return rtrim($c,'/');
- }