欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-14 13:44:12
本文实例讲述了tp5.0框架隐藏index.php入口文件及模块和控制器的方法。分享给大家供大家参考,具体如下:1. 隐藏入口文件:[ iis ]在iis的高版本下面可以配置web.config,在中...

本文实例讲述了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()