最新消息:七维网络改版啦,域名www.7dwww.com

ThinkPHP 使用模块映射隐藏后台真实地址

网络技术 sevennet 2786浏览 0评论

例如:项目应用目录/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 使用模块映射隐藏后台真实地址

头像
发表我的评论
取消评论

Captcha Code

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址