ThinkPHP 5.1 更改应用目录、入口位置 并隐藏URL中的入口文件

释放双眼,带上耳机,听听看~!

首先说一下,TP5的文档真的是写得够简单够烂的。好多坑,大叔一边自己爬坑一边记录吧。

ThinkPHP 5.1 更改应用目录、入口位置 并隐藏URL中的入口文件

默认路径

其它不表,默认访问URL为:

http://serverName/public/index.php/模块/控制器/方法

fkl  WEB部署目录(或者子目录)
├─application           应用目录
│  ├─common             公共模块目录(可以更改)
│  ├─index              模块目录
│  │  ├─common.php      模块函数文件
│  │  ├─controller      控制器目录
│  │  |  ├─Index.php   类文件
│
├─public                WEB目录(对外访问目录)
│  ├─index.php          入口文件
│  ├─router.php         快速测试文件
│  └─.htaccess          用于apache的重写
│
├─think                 命令行入口文件

例如大叔以目前的目录结构,在index模块的控制器Index中写一个方法,hello()

<?php
namespace appindexcontroller;
use thinkController;

class Index extends Controller{
    public function Hello(){
        echo 'Hello World!';
    }
}

则URL访问为:http://localhost/fkl/public/index.php/index/index/hello

更改入口文件位置

大叔建议不更改默认的入口文件位置,因为大叔本地有多个项目,为了开发测试方便,大叔不想经过public而直接进行访问。需要在www目录下创建一个index.php

<?php
namespace think;

// 定义应用目录
define('APP_PATH', __DIR__ . '/application/');
// 加载框架基础引导文件
require __DIR__ . '/thinkphp/base.php';

// 执行应用并响应
Container::get('app', [APP_PATH])->run()->send();

此时的访问路径变为:http://localhost/fkl/index.php/index/index/hello

隐藏URL中的入口文件

这个官方给了文档,但其中的apache的重写目录有问题

在入口文件的根目录创建.htaccess文件,并内容如下。原本在public目录下也有此文件,大叔这里就要移动到www目录下,如果不改更入口目录就不需要移动,只需要更改内容

<IfModule mod_rewrite.c>
  Options +FollowSymlinks -Multiviews
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
</IfModule>

此时的访问路径变为:http://localhost/fkl/index/index/hello

给TA打赏
共{{data.count}}人
人已打赏
Coding

1024,程序猿们节日快乐

2018-10-24 8:36:29

Coding

MySQL基础知识 数据引擎介绍

2019-6-24 10:32:14

免责声明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站除大叔原创外的资源均来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请通过私信与我们联系处理。敬请谅解!
2 条回复 A文章作者 M管理员
  1. nihao

    楼主会tp么,有没有实际的案例教程?

    • 方块李

      教程直接搜,这里有不少慕课的教程

个人中心
今日签到
有新私信 私信列表
搜索