例如:项目应用目录/Application下模块如下,默认后台模块为Admin
现在需要修改后台模块的访问地址,以防被别有用心的人很容易就猜到,然后各种乱搞…
(在公共配置文件/Application/Common/Conf/config.php中,设置模块映射)
‘URL_MODULE_MAP’ => array(‘lws’=>’admin’), //设置模块映射 ‘模块映射名’=>’实际模块名’
此时后台的访问地址就变为127.0.0.1/lws,原来的Admin已经访问不了了
需要注意的是,模块映射名与实际模块名都采用小写形式,如果用大写的Admin会造成有的地方模块映射不成功,例如分页的地址还是指向原来的模块名。
另外设置模块映射时,记得把映射名加入到允许访问模块中,替换原来的模块名,相关代码如下:
<?php
return array(
//’配置项’=>’配置值’
‘DEFAULT_MODULE’ => ‘Home’, //默认模块
‘MODULE_ALLOW_LIST’ => array(‘Home’,’test’), //允许访问的模块
‘URL_MODULE_MAP’ => array(‘test’=>’admin’), //设置模块映射
);
使用模块映射之后出现的问题
thinkphp使用模块映射之后 U函数和$this->redirect方法跳转会出现还是跳转到原来的地址的现象
如U(frame/footer)应该跳转到:
/index.php/test/frame/footer.html
可实际上U(frame/footer)得出的结果依然是
/index.php/Admin/frame/footer.html
这里的解决方法是:
修改U函数:ThinkPHP/Common/function.php文件的第976行(thinkphp3.2.3),
if($_module = array_search(strtolower($var[$varModule]),$maps)){
去掉strtolower(),把这一行改为:
if($_module = array_search($var[$varModule]),$maps){
去掉strtolower之后就会区分大小写,所以要把配置文件里的小写的“admin”改为“Admin”,
也就是配置文件/Application/Common/Conf/config.php中
‘URL_MODULE_MAP’ => array(‘test’=>’Admin’), //设置模块映射
改完之后清除缓存就会正确跳转了。
转载请注明:七维网络 » ThinkPHP 使用模块映射隐藏后台真实地址