ThinkPHP框架中简化URL地址

1. 概述

  • 在项目中使用ThinkPHP框架,发现使用该框架还能简化URL地址,如:
    http: //localhost/index.php/Home/Index/search
    可以转换为:
    http: //localhost/search

2.操作环境

  • 操作系统:Ubuntu 14.04.3 LTS
  • 框架:ThinkPHP 3.2.3
  • Web服务器:Apache2.4.10

3.步骤

3.1 URL模式设置

  • 需要在ThinkPHP中的应用配置文件中设置(默认为1):“URL_MODEL”=>2
    将ThinkPHP设置为REWRITE模式

3.2 重写规则的定义

  • 在Apache下面的话,在入口文件index.php同目录下,建立.htaccess文件,添加如下内容:
    <IfModule mod_rewrite.c>
     RewriteEngine on
     RewriteCond %{REQUEST_FILENAME} !-d
     RewriteCond %{REQUEST_FILENAME} !-f
     RewriteRule ^(.*)$ index.php?s=/$1 [QSA,PT,L]
    </IfModule>

3.3 绑定模块与控制器

  • http: //localhost/index.php/Home/Index/search中:
    • index.php:入口文件
    • Home:模块
    • Index:控制器
    • search:方法
  • 因此需要将Home模块、Index控制器与index.php入口文件绑定,从而进入index.php文件则默认进入/Home/Index中。绑定代码如下:
index.php
<?php
    //绑定Home模块
    define('BIND_MODULE','Home');
    //绑定Index控制器
    define('BIND_CONTROLLER','Index');
  • 实现效果为 http: //localhost/index.php/search

3.4 配置Apache2

  • 需要设置Apache2支持 .htaccess文件,首先使Apache2支持 mod_rewrite.so模块
    终端运行:sudo a2enmod   
    输入:rewrite 
  • 修改/etc/apache2/apache2.conf
    <Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All    //修改这一行
        Require all granted
    </Directory>
  • 重启Apache2,即可支持ThinkPHP中的REWRITE模式
  • 实现效果为 http: //localhost/search,大功告成!

4.补充说明

  • 简化URL地址后,其原理是/Home/Index/search方法被绑定到入口文件index.php中。此时search方法中所处的目录为index.php的所在目录,而不是其物理目录“/Home/Controller/”中,所以之后在search方法中需要指定路径时,“./”路径代表的是与index.php所处的同一路径,而不是“/Home/Controller/”

参考资料

http://document.thinkphp.cn/manual_3_2.html#url

http://my.oschina.net/DDDdragon/blog/293873

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值