php技术博客
让天下没有搞不定的bug~

thinkphp3.2 路由时出错提示:无法加载模块

利用onethink二次开发做了一个站,上线的时候发现url地址太长,所以考虑用路由来美化url,开始是这样写的:

[warning] /* URL配置 */
‘URL_CASE_INSENSITIVE’ => true, //默认false 表示URL区分大小写 true则表示不区分大小写
‘URL_MODEL’ => 2, //URL模式 0:普通模式 1:PATHINFO模式 2:REWRITE模式 3:兼容模式
‘VAR_URL_PARAMS’ => ”, // PATHINFO URL参数变量
‘URL_PATHINFO_DEPR’ => ‘/’, //PATHINFO URL分割符
‘URL_HTML_SUFFIX’ => ‘.html’,

‘URL_ROUTER_ON’ => true,
‘URL_ROUTE_RULES’ => array(
‘news/:id\d’ => array(‘Home/Article/detail’), //资讯详情

),[/warning]

访问网站***.com/news/1.html的时候提示出现错误,错误提示如下:

无法加载模块:News

错误位置

FILE: E:\wwwroot\dichan\ThinkPHP\Library\Think\Dispatcher.class.php  LINE: 168

然后各种搜索,官网都搜遍了还是没找到问题,差点急死老子了,查看官网手册,其中有句话这样说:

3.2的路由功能是针对模块设置的,所以URL中的模块名不能被路由,路由定义也通常是放在模块配置文件中。

哈哈,以前的版本都是写在公共文件里的config.php,原来3.2做了改动,必须写在模块的config.php,心中暗喜,是不是这个问题导致的错误,果断试了试,shit!还是不行,然后看了一下配置文件的配置,感觉比较可疑:

‘MODULE_DENY_LIST’ => array(‘Common’,’User’,’Admin’,’Install’),
//’MODULE_ALLOW_LIST’ => array(‘Home’,’Admin’),

吧下边的那个注释删掉:

‘MODULE_DENY_LIST’ => array(‘Common’,’User’,’Admin’,’Install’),
‘MODULE_ALLOW_LIST’ => array(‘Home’,’Admin’),

刷新,路由正常,原来是这里的问题,原来3.2对模块的访问是自动判断的,所以通常情况下无需配置模块列表即可访问,在部署模块的时候,默认情况下都是基于类似于子目录的URL方式来访问模块的,所以这里的模块没有允许被访问。soga,这个问题憋了三天!!!终于解决了!

赞(2)
未经允许不得转载:PHP技术博客 » thinkphp3.2 路由时出错提示:无法加载模块