thinkphp隐藏index.php/home并允许访问其他模块的实现方法
想要达成的效果很简单,我有两个模块,Home、Wechat。
http://localhost/index.php/home/index/index 缩短为: http://localhost/index/index
http://localhost/index.php/wechat/index/index 缩短为: http://localhost/wechat/index/index
隐藏index.php,这个比较简单,我开启.htaccess的支持就行,具体配置执行百度吧,我用的是apache2,建立一个软连接就成
ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load
重启服务
然后,什么都不用做,index.php就被隐藏了
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] </IfModule>
这就是ThinkPHP默认的.htaccess文件内容,可以看到,index.php已经可以被省略了
然后就是home的隐藏,如果我们直接在.htaccess文件中写上home,那么,其他的模块我们就无法访问了,就只有使用thinkphp提供的机制了
这里说法就很多了,但我发现,大多都直说了一部分,都没人说完整的。
我的做法是这样的
在Common/Conf/config.php中加入配置
'DEFAULT_MODULE' => 'Home', 'MODULE_ALLOW_LIST' => array('Home','Wechat')
其中‘MODULE_ALLOW_LIST'的值是你所有允许访问的模块名,只有写在这里面的模块才能被访问。
最后,很多人说的在index.php中加入
define('BIND_MODULE','Home');
以上所述是小编给大家介绍的thinkphp隐藏index.php/home并允许访问其他模块的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
相关推荐
-
ThinkPHP访问不存在的模块跳转到404页面的方法
首先在ACTION中新建一个文件EmptyAction.class.php,其代码如下: <?php class EmptyAction extends Action{ function _empty(){ header("HTTP/1.0 404 Not Found");//使HTTP返回404状态码 $this->display("Public:404"); } } ?> 使用apache服务器的情况下需在apache中的网站配置中加入 Err
-
ThinkPHP空模块和空操作详解
ThinkPHP的空模块和空操作也是很有实用意义的功能,空模块的概念就是当ThinkPHP找不到指定模块的时候,它会尝试去定位空模块(EmptyAction),执行空模块里面的index操作.同理,空操作也是同样的概念,当系统找不到指定模块下的操作方法的时候,就会尝试去定位空操作方法(empty).其实很好理解,就有点类似php虚拟主机里面的自定义404页面,但它比自定义404更加灵活,利用这个机制,我们可以实现错误页面和一些URL的优化,下面分别详细介绍下空模块和空操作的写法. 1.空模块,在
-
ThinkPHP采用模块和操作分析
任何一个WEB行为都可以认为是一个模块的某个操作,系统会根据当前的URL来分析要执行的模块和操作.这个分析工作由URL调度器来实现,官方内置了Dispatcher类来完成该调度. 在Dispatcher调度器中,会根据 http://servername/appName/moduleName/actionName/params 来获取当前需要执行的项目(appName). 模块(moduleName)和操作(actionName),在某些情况下,appName可以不需要(通常是网站的首页,因为项
-
thinkPHP5.0框架引入Traits功能实例分析
本文实例讲述了thinkPHP5.0框架引入Traits功能.分享给大家供大家参考,具体如下: ThinkPHP 5.0开始采用trait功能(PHP5.4+)来作为一种扩展机制,可以方便的实现一个类库的多继承问题. Traits 是一种为类似 PHP 的单继承语言而准备的代码复用机制.Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用方法集.Traits和类组合的语义是定义了一种方式来减少复杂性,避免传统多继承和混入类(Mixin)相关的典型问题. 但由于
-
thinkPHP5.0框架模块设计详解
本文实例讲述了thinkPHP5.0框架模块设计.分享给大家供大家参考,具体如下: 5.0版本对模块的功能做了灵活设计,默认采用多模块的架构,并且支持单一模块设计,所有模块的命名空间均以app作为根命名空间(可配置更改). 目录结构 标准的应用和模块目录结构如下: ├─application 应用目录(可设置) │ ├─common 公共模块目录(可选) │ ├─common.php 公共函数文件 │ ├─route.php
-
ThinkPHP写第一个模块应用
找到项目文件夹下面的Lib/Action这个目录,在下面有个创建好的例子IndexAction.class.php,加入我们创建的是admin这个项目,那么./admin/Lib/Action/IndexAction.class.php,这个模块是默认加载的模块.在ThinkPHP中,自动加载的动作.方法.操作等等都是以index命名的. 下面,我们创建一个自己的模块,比如UserAction,class.php(注意命名规则),我们编辑这个文件: 复制代码 代码如下: <?php //先继承A
-
thinkPHP5.0框架命名空间详解
本文实例讲述了thinkPHP5.0框架命名空间.分享给大家供大家参考,具体如下: 命名空间 ThinkPHP采用命名空间方式定义和自动加载类库文件,有效的解决了多模块和Composer类库之间的命名空间冲突问题,并且实现了更加高效的类库自动加载机制. 如果不清楚命名空间的基本概念,可以参考PHP手册:PHP命名空间 特别注意的是,如果你需要调用PHP内置的类库,或者第三方没有使用命名空间的类库,记得在实例化类库的时候加上 \,例如: // 错误的用法 $class = new stdClass
-
ThinkPHP中URL路径访问与模块控制器之间的关系
ThinkPHP中URL路径访问与模块控制器之间的关系是ThinkPHP程序开发中非常重要的一个环节.熟练的掌握该技巧对于进一步学习ThinkPHP起着至关重要的作用.具体分析如下: 打开控制器页面: UserAction.class.php //路径:admin\Lib\Action\ 此处的admin为新建的项目对应的目录 我们都知道在Action里的方法默认为Public属性,私有属性的方法没法访问,但定义私有属性的方法也有其意义所在. 在其中定义私有方法的意义:主要体现在,能够在这
-
thinkphp中空模板与空模块的用法实例
本文实例讲述了thinkphp中空模板与空模块的用法.分享给大家供大家参考.具体实现方法如下: 1. 空操作 复制代码 代码如下: function _empty($name){ $this-]show("$name 不存在 [a href='__APP__/Index/index']返回首页[/a]"); } 2. 空模块 复制代码 代码如下: class EmptyAction extends Action{ function index()
-
解密ThinkPHP3.1.2版本之模块和操作映射
模板和操作映射功能是ThinkPHP3.1.2版本支持的对模块和操作设置的映射机制,由于可以通过改变配置动态改变(实际真正改变,并非别名)URL访问地址,加强了应用的安全性,而且,映射机制具有URL不区分大小写访问的特性,对于应用的迁移也有很大的帮助. 因为,普通情况下,如果需要更改URL的模块或者操作访问的话,需要改动的文件较多,容易导致关联性出错.尤其是很多应用需要迁移到新版本的时候,由于模型和控制器改动较多,导致URL地址出现大的调整,通过模块和操作映射功能,就可以很轻松的解决此类问题.
-
ThinkPHP实现跨模块调用操作方法概述
使用 $this 可以调用当前模块内的方法,但是很多情况下经常会在当前模块中调用其他模块的方法.ThinkPHP内置了A方法与R方法这两个特殊的大写字母方法来处理跨模块调用的问题. 目前Index模块内有index操作User模块有showName操作User模块及showName操作具体代码如下: <?php class UserAction extends Action{ public function showName(){ echo "Hello World"; } }
-
thinkPHP5.0框架自动加载机制分析
本文实例讲述了thinkPHP5.0框架自动加载机制.分享给大家供大家参考,具体如下: 概述 ThinkPHP5.0 真正实现了按需加载,所有类库采用自动加载机制,并且支持类库映射和composer类库的自动加载. 自动加载的实现由think\Loader类库完成,自动加载规范符合PHP的PSR-4. 自动加载 由于新版ThinkPHP完全采用了命名空间的特性,因此只需要给类库正确定义所在的命名空间,而命名空间的路径与类库文件的目录一致,那么就可以实现类的自动加载. 类库的自动加载检测顺序如下:
-
thinkphp3.2实现跨控制器调用其他模块的方法
本文实例讲述了thinkphp3.2实现跨控制器调用其他模块的方法.分享给大家供大家参考,具体如下: thinphp中前台后台都有互相调用方法,这样可以省去重复内容. $hello = new \Admin\Common\Fun\hello(); $hello->hehe(); 调用其他地方的方法同理. 如果是在同控制器里模块名可以省略. 如调用common里面的某个类的方法: $hello = new \Common\Fun\hello(); $hello->hehe(); 框架里面提供了跨
随机推荐
- jQuery实现获取table中鼠标click点击位置行号与列号的方法
- javascript完美实现给定日期返回上月日期的方法
- thinkphp的CURD和查询方式介绍
- jquery+ajax+text文本框实现智能提示完整实例
- 解决SQL SERVER数据库备份时出现“操作系统错误5(拒绝访问)。BACKUP DATABASE 正在异常终止。”错误的解决办法
- jQuery Lightbox 图片展示插件使用说明
- java 归并排序的实例详解
- javascript 补零 函数集合
- CodeIgniter框架基本增删改查操作示例
- php禁止直接从浏览器输入地址访问.php文件的方法
- Android Eclipse 注释模板的使用(图文说明)
- 在Python中使用Mako模版库的简单教程
- Android手机悬浮窗口小案例
- IE8兼容Jquery.validate.js的问题
- Mysql 插入中文及中文查询 (修改+调试)
- 正则一则 将金额转换成人民币大写的代码
- Java语言实现简单FTP软件 FTP软件效果图预览之上传功能(3)
- SpringMVC之简单的增删改查示例(SSM整合)
- Android UI设计系列之ImageView实现ProgressBar旋转效果(1)
- Java 对10个数进行排序的实现代码