tp5.0框架隐藏index.php入口文件及模块和控制器的方法分析

本文实例讲述了tp5.0框架隐藏index.php入口文件及模块和控制器的方法。分享给大家供大家参考,具体如下:

1. 隐藏入口文件:

[ IIS ]

在IIS的高版本下面可以配置web.Config,在中间添加rewrite节点:

<rewrite>
 <rules>
 <rule name="OrgPage" stopProcessing="true">
 <match url="^(.*)$" />
 <conditions logicalGrouping="MatchAll">
 <add input="{HTTP_HOST}" pattern="^(.*)$" />
 <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
 <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
 </conditions>
 <action type="Rewrite" url="index.php/{R:1}" />
 </rule>
 </rules>
 </rewrite>

[ Apache ]

httpd.conf配置文件中加载了mod_rewrite.so模块

AllowOverride None 将None改为 All

把下面的内容保存为.htaccess文件放到应用入口文件的同级目录下

<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]//此处与官网不同,官网是这样写,尝试不中,修改成一下可以
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
</IfModule>

2. 模块和控制器隐藏:

public目录下的index.php入口文件里添加define('BIND_MODULE', 'index/index');,如下:

<?php
// [ 应用入口文件 ]
define('BIND_MODULE', 'index/index');
// 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';

设置后,我们的URL访问地址则变成:

http://serverName/index.php/操作/[参数名/参数值...]

扩展:

tp5.1隐藏控制器和模块与5.0不同,入口文件中修改如下:

Container::get('app')->bind('index/index')->run()->send()

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

(0)

相关推荐

  • ThinkPHP中url隐藏入口文件后接收alipay传值的方法

    本文实例讲述了ThinkPHP中url隐藏入口文件后接收alipay传值的方法.分享给大家供大家参考.具体方法如下: 现在公司项目的需求变化多端,项目使用的是Thinkphp2.0,而conf.php中设置的URL_MODEL=2,为了兼容.htaccess和隐藏index.php,但在使用一些第三方接口时(例如支付宝或MSN开放平台),他们返回的参数往往含有一个?号,而URL_MODEL=2时,TP会自动将含有?的URL进行转换. 转换前:http://www.xxx.com/index.ph

  • 浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法

    1,心血来潮,把ThinkPHP项目部署到了nginx上,以上是在apache上跑的.突然发现nginx不支持pathinfo功能,难怪在TP中调怎么都没管用. 2,开始上文件了,比网上其他一些杂的好多了: server { listen 80; #listen [::]:80; server_name www.tp.com tp.com; index index.html index.htm index.php default.html default.htm default.php; roo

  • ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解

    本文实例讲述了ThinkPHP3.2.3框架实现的空模块.空控制器.空操作,跳转到错误404页面.分享给大家供大家参考,具体如下: [演示准备] 首先下载了一个ThinkPHP3.2.3,目录结构如下:(只有Home模块.Index控制器.index操作方法) 然后找了一个简易的错误404页面404.html放到了根目录: [空模块] 访问一个不存在的模块Admin,错误提示: 修改根目录下 ThinkPHP/Library/Think/Dispatcher.class.php 178行代码:

  • Nginx配置PATHINFO隐藏thinkphp index.php

    Nginx配置PATHINFO隐藏index.php Nginx配置文件里放入这段代码 server { listen 80; default_type text/plain; root /var/www/html; index index.php index.htm index.html; #隐藏index.php location / { if (!-e $request_filename) { #一级目录 # rewrite ^/(.*)$ /index.php/$1 last; #二级目

  • Thinkphp通过一个入口文件如何区分移动端和PC端

    废话不多说了,直接给大家贴代码了,具体代码如下所示: <?php // 检测PHP环境 if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !'); // 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false define('APP_DEBUG',True); define('MULTI_MODULE', false); // 获取当前文件所在的目录 define('DKSITE_TSDIR

  • thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法

    本文实例讲述了thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法.分享给大家供大家参考.具体分析如下: 3.2版本支持根据当前的运行环境生成Lite文件,可以替换框架的入口文件或者应用入口文件,提高运行效率. 我们的建议是在生产环境中关闭调试模式后生成Lite文件. 注意,目前SAE平台不支持直接生成Lite文件. 生成Lite文件 要生成Lite文件,需要在入口文件中增加常量定义: 复制代码 代码如下: define('BUILD_LITE_FILE',true); 默认

  • ThinkPHP入口文件设置及相关注意事项分析

    本文实例分析了ThinkPHP入口文件设置及相关注意事项.分享给大家供大家参考.具体如下: 复制代码 代码如下: <?php  /*第一层意义:   *定义的是与thinkphp有关的核心框架文件目录路径,它可以通过这一个常量在以后运行的时候都去找这个路径,   *确保在以后运行过程中,绝对不会出现问题的(绝对不会对整个项目运行加载路径产生错误):   *第二层意义:   *做一个操作(放跳墙),是防止用直接访问我们的敏感文件,怎么避免呢,我就可以做一个页面包含整个   *敏感页面,用户的访问必

  • ThinkPHP框架里隐藏index.php

    本文所写的配置在ThinkPHP3.2.2上测试过.按理也兼容其它版本. 首先修改配置文件: 'URL_CASE_INSENSITIVE' => true, // 默认false 表示URL区分大小写 true则表示不区分大小写 'URL_MODEL' => 2, // URL访问模式,可选参数0.1.2.3,代表以下四种模式: // 0 (普通模式); 1 (PATHINFO 模式); 2 (REWRITE 模式); 3 (兼容模式) 默认为PATHINFO 模式 Nginx 推荐: loc

  • ThinkPHP中URL路径访问与模块控制器之间的关系

    ThinkPHP中URL路径访问与模块控制器之间的关系是ThinkPHP程序开发中非常重要的一个环节.熟练的掌握该技巧对于进一步学习ThinkPHP起着至关重要的作用.具体分析如下: 打开控制器页面: UserAction.class.php  //路径:admin\Lib\Action\   此处的admin为新建的项目对应的目录 我们都知道在Action里的方法默认为Public属性,私有属性的方法没法访问,但定义私有属性的方法也有其意义所在. 在其中定义私有方法的意义:主要体现在,能够在这

  • 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的支持就行,具体配置执行百度吧,我用的是apa

  • Thinkphp5 如何隐藏入口文件index.php(URL重写)

    大家好,我是Yangrl. 路由在框架中的作用打个比方的话,路由好比是WEB应用的总调度室,对于访问的URL地址,路由可以拒绝或者接受某个URL请求,并进行分发调度,而且还有一个副作用是因为路由规则可以随意定义,因此可以让你的URL请求地址更优雅,因为不会暴露实际的URL地址,也就意味着更安全--<ThinkPHP5路由完全指南> 在之前,比如我们要访问index 模块下的 Index控制器 下的index方法,在vhost(虚拟主机/虚拟域名)下,是这样的繁琐的一行URL地址: tp5.co

  • thinkphp3.2实现跨控制器调用其他模块的方法

    本文实例讲述了thinkphp3.2实现跨控制器调用其他模块的方法.分享给大家供大家参考,具体如下: thinphp中前台后台都有互相调用方法,这样可以省去重复内容. $hello = new \Admin\Common\Fun\hello(); $hello->hehe(); 调用其他地方的方法同理. 如果是在同控制器里模块名可以省略. 如调用common里面的某个类的方法: $hello = new \Common\Fun\hello(); $hello->hehe(); 框架里面提供了跨

随机推荐