ThinkPHP--安装与配置和URL

安装

官网下载放入需要使用的网站位置。然后输入测试域名即可,比如localhost

目录结构

整体目录:

www  WEB部署目录(或者子目录)
├─index.php       入口文件
├─README.md       README文件
├─Application     应用目录
├─Public          资源文件目录
└─ThinkPHP        框架目录

其中,ThinkPHP目录:

├─ThinkPHP 框架系统目录(可以部署在非web目录下面)
│  ├─Common       核心公共函数目录
│  ├─Conf         核心配置目录 
│  ├─Lang         核心语言包目录
│  ├─Library      框架类库目录
│  │  ├─Think     核心Think类库包目录
│  │  ├─Behavior  行为类库目录
│  │  ├─Org       Org类库包目录
│  │  ├─Vendor    第三方类库目录
│  │  ├─ ...      更多类库目录
│  ├─Mode         框架应用模式目录
│  ├─Tpl          系统模板目录
│  ├─LICENSE.txt  框架授权协议文件
│  ├─logo.png     框架LOGO文件
│  ├─README.txt   框架README文件
│  └─ThinkPHP.php 框架入口文件
自动生成

可以生成前台模块和后台模块,分别用于前台站点管理和后台站点管理。方法如下:
1、在入口文件index.php同级目录中新建admin.php文件;
2、把index.php文件的内容复制到admin.php
3、将admin.php中的:define('BIND_MODULE','Home');改为:define('BIND_MODULE','Admin');
(新版的可能会没有define('BIND_MODULE','Home');,所以可以直接在admin.php中直接添加define('BIND_MODULE','Admin'); 即可);
4、在浏览器中输入:localhost/admin.php。回车然后刷新目录列表,就会在application中生成了一个admin模块。

首页目录

首页目录位于:application–>Home->Controller->IndexController.class.php里
严格来说,我们的访问地址为:localhost/index.php/Home/Index/index
:Home模块下的Index控制器下的index方法

自建控制器:
比如在Home下的Controller下建一个名为:UserController.class.php的文件
内容为:

<?php
namespace Home\Controller;
use Think\Controller;
class UserController extends Controller{
    public function index(){
        echo 'User_test';
    }
}

访问的方式为:test.test.com/index.php/Home/User/index

配置

禁止访问模块

有些模块我们希望禁止被用户访问,比如:Common和Runtime模块,当然,框架在默认就禁止访问了。
当强行访问的时候回提示:“无法加载Common”的错误信息。

手动禁止,需要在应用(这里是App)下找到Common下的Conf下的config.php, 这是一个配置文件。

//禁止访问模块
'MODULE_DENY_LIST' => array('Common','Runtime'),

有个问题需要注意:会出现No input file specified.

解决方法:

.htaccess文件中的

RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

在默认情况下会导致No input file specified.

修改成

RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]

问题解决。 
允许访问模块
//注意要写全
'MODULE_ALLOW_LIST' =>array('Home','Admin'),

只允许访问Home模块:

'MODULE_ALLOW_LIST' =>array('Home'),

如果有多个访问模块,那在默认URL访问的时候,应该有一个首选访问,默认是Home,想设置Admin为默认,可以这样:

'DEFAULT_MODULE => 'Admin',

URL模式

pathinfo模式

默认采用pathinfo模式,也推荐使用pathinfo模式。
比如在Home模块的控制器下新建一个控制器类UserController.class.php:

<?php
namespace Home\Controller;
use Think\Controller;
class UserController extends Controller{
    public function index($user,$pass){
        echo 'user:'.$user,'<br/>pass:'.$pass;
    }
}

则在浏览器输入:

http://test.test.com/index.php/Home/User/index/user/gabby/pass/huang

则会输出:

user:gabby
pass:huang
设置键值对分隔符

在配置文件里设置

'URL_PATHINFO_DEPR' =>'_',

则浏览器需要这样输入:

http://test.test.com/index.php/Home_User_index_user_gabby_pass_huang
普通模式

则浏览器需要这样输入:

http://test.test.com/index.php?m=Home&c=User&a=index&user=gabby&pass=huang

m是模块,c是控制器,a是方法,接下来就是键值对了。

REWRITE重写模式(重要)

1、打开apache,找到httpd.conf配置文件中的mod_rewrite.so模块,去除#号开启。
2、找到AllowOverride NoneNone改为All
然后,在浏览器输入:

test.test.com/Home/Index/index/

即可正常访问!
这里需要注意,如果提示:No input file specified.
那需要在.htaccess文件把

IfModule mod_rewrite.c>
  Options +FollowSymlinks
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>

设置成:

IfModule mod_rewrite.c>
  Options +FollowSymlinks
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
</IfModule>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值