ThinkPHP框架中简化URL地址

来源:互联网 发布:java程序调用存储过程 编辑:程序博客网 时间:2024/05/29 07:34

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

0 0