利用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,这个问题憋了三天!!!终于解决了!