1、前情概要:tp版本3.2.3,想要实现url 路由功能,然后配合apache的htaccess文件,实现url 美化,突然问题来了,thinkphp报错【无法加载模块】
2、去查找手册,手册中是这样记载的:
启用路由 要使用路由功能,前提是你的URL支持PATH_INFO(或者兼容URL模式也可以,采用普通URL模式的情况下不支持路由功能),并且在应用(或者模块)配置文件中开启路由: // 开启路由 'URL_ROUTER_ON' => true, 3.2的路由功能是针对模块设置的,所以URL中的模块名不能被路由,路由定义也通常是放在模块配置文件中。 3.2.3版本开始增加全局路由定义支持,可以在项目的公共配置文件中定义路由。 然后就是配置路由规则了,在模块的配置文件中使用URL_ROUTE_RULES参数进行配置,配置格式是一个数组,每个元素都代表一个路由规则,例如: 'URL_ROUTE_RULES'=>array( 'news/:year/:month/:day' => array('News/archive', 'status=1'), 'news/:id' => 'News/read', 'news/read/:id' => '/news/:1', ), 系统会按定义的顺序依次匹配路由规则,一旦匹配到的话,就会定位到路由定义中的控制器和操作方法去执行(可以传入其他的参数),并且后面的规则不会继续匹配。
其中:[3.2的路由功能是针对模块设置的,所以URL中的模块名不能被路由,路由定义也通常是放在模块配置文件中。 3.2.3版本开始增加全局路由定义支持,可以在项目的公共配置文件中定义路由]
我的目录结构是这样的:
要加入的路由规则:
<?php return array( 'URL_MODEL' =>3, 'URL_ROUTER_ON' => true, //路由规则 'URL_ROUTE_RULES' => array( '/^index$/' => 'Index/index', ), ); ?>
1)应用目录【app】,按照手册的意思,我将配置信息放在【Home】模块,【App/Home/Conf/config.php】中,访问 http://127.0.0.1:8075/index.php?s=/index.html 还是报错,【无法加载模块】!失败了!
2)继续,把配置信息放在公共配置文【App/Common/Conf/config.php】中,访问 http://127.0.0.1:8075/index.php?s=/index.html 【可以成功访问】
3)若一直放在全局配置文件,那么功能模块多了呢?比如,Home,User,Employee,Portal 等 ,是不是配置文件中,就得这样写呢?所以,我的第一想法还是放在【模块配置文件中】
'URL_ROUTE_RULES' => array( '/^index$/' => 'Home/Index/index', ),
4)继续,在网上找相关的文章,解决办法如下:
I. 将配置信息还是放到【App/Home/Conf/config.php】中,然后在【App/Common/Conf/config.php】公共配置文件中,加入
‘MODULE_ALLOW_LIST’ => array (‘Home’),
<?php return array( 'URL_MODEL' =>3, 'MODULE_ALLOW_LIST'=> array ('Home'),//还可以加入其它模块 'DEFAULT_MODULE' => 'Home',//默认模块Home );
访问 http://127.0.0.1:8075/index.php?s=/index.html 【可以成功访问】
注:更多请查看手册:ThinkPHP模块化设计
原创文章,转载请注明: 转载自HSBLOG
本文链接地址: ThinkPHP3.2.3实现路由功能的[坑]