1、URL重写,隐藏网址中的Index.php。

ThinkPHP 作为 PHP 框架,是单一入口的,那么其原始的 URL 便不是那么友好。但 ThinkPHP提供了各种机制来定制需要的 URL 格式,配合 Apache .htaccess 文件,更是可以定制出人性化的更利于 SEO 的URL 地址来。

.htaccess文件是 Apache 服务器中的一个配置文件,它负责相关目录下的网页配置。我们可以利用 .htaccess 文件的Rewrite 规则来隐藏掉 ThinkPHP URL 中的 index.php 文件(即入口文件),这也是 ThinkPHP URL伪静态的第一步。

例如原来的 URL 为:

http://www.baidu.com/index.php/Home/Index/index/id/1

去掉 index.php 之后变为:

http://www.baidu.com/Home/Index/index/id/1

如此一来,就变成了 http://网页地址/应用模块名称/操作名称[/变量参数] 的常见 URL 格式。

更改 Apache httpd.conf 配置文件

一、加载了 mod_rewrite.so

确认加载了 mod_rewrite.so 模块(将如下配置前的 # 号去掉):

LoadModule rewrite_module modules/mod_rewrite.so

二、更改 AllowOverride 配置

更改需要读取 .htaccess 文件的目录,将原来的目录注释掉:

#<Directory ”C:/Program Files/ApacheGroup/Apache2/htdocs”>

<Directory E:/html/myapp>

更改 AllowOverride None 为 AllowOverride FileInfo Options ,

更改后的配置如下所示:

#<Directory ”C:/Program Files/ApacheGroup/Apache2/htdocs”>

<DirectoryE:/html/myapp>

AllowOverride FileInfoOptions

</Directory>

.htaccess 是基于目录来控制的,<DirectoryE:/html/myapp> 该句即表示需要读取 .htaccess 文件的目录,要根据实际具体Apache 的解析目录来配置。虚拟主机如果提供 .htaccess 控制,一般都已经配置好了。

三、添加 .htaccess 文件 Rewrite 规则

在需要隐藏 index.php 的目录下创建 .htaccess文件,并写入如下规则代码:

<IfModulemod_rewrite.c>

RewriteEngine on

#不显示index.php

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

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

</IfModule>

四、更改项目配置文件

编辑项目配置文件 Conf/config.php ,将 URL 模式配置为 2(Rewrite模式):

‘URL_MODEL’=>2,

保存各配置文件后,重启 Apache 服务器并删除 Runtime 目录下的项目缓存文件,在浏览器访问隐藏index.php 后的地址测试是否成功:

http://www.baidu.com/Home/Index/index/id/1

如果访问成功,那么利用 Apache .htaccess 文件的 Rewrite 规则隐藏 index.php入口文件的配置就成功了。

2.如果只有Home目录,没有Admin目录,还可以把Home目录隐藏。在入口文件index.php中添加一行

define('BIND_MODULE','Home');

URL变成了这样

http://www.baidu.com/Index/index/id/1

3.减少网址的层级,用-取代/。

在common下配置文件中加入下面的代码

'URL_PATHINFO_DEPR'=>'-',

保存各配置文件后,重启 Apache 服务器并删除 Runtime 目录下的项目缓存文件,地址是否成功变成两级:

http://www.baidu.com/Index-index-id-1

4、伪静态,给网址加上后缀.html

ThinkPHP 支持伪静态 URL 设置,可以设置需要的 URL 后缀。编辑项目配置文件 Conf/config.php ,将 
URL_HTML_SUFFIX 参数配置如下:

'URL_HTML_SUFFIX' => '.html',

删除 Runtime 目录下的项目缓存文件使配置生效后,在浏览器访问如下地址,效果一样:

http://www.baidu.com/Index-index-id-1
http://www.baidu.com/Index-index-id-1.html

在参数配置中,也可以配置其他任何需要的后缀,注意后缀设置中包括 . 符号。
设置了伪静态后,为了保持各处 URL 一致,推荐使用 U 方法在模板里面自动生成 URL,具体参见《ThinkPHP U方法自动生成URL》。

提示:
ThinkPHP 伪静态有一个让人容易误解的地方:以为配置好伪静态之后,系统会自动生成如 xxx.html这类的网址。实际情况不是这样的,而是如上文所说,配置伪静态之后,是否有 .html 这类后缀跟无后缀的 URL访问效果是一样的。因此,要是用伪静态,只能手动添加静态后缀或者使用 ThinkPHP U方法 自动生成带后缀的 URL 地址。在此,当然推荐使用 U方法 来自动生成具有伪静态地址的 URL 格式。

最新文章

  1. 项目自动化建构工具gradle 入门5——在intellij中做一个gradle的web工程
  2. HTML5的实用
  3. 25.按要求编写一个Java应用程序: (1)编写一个矩形类Rect,包含: 两个属性:矩形的宽width;矩形的高height。 两个构造方法: 1.一个带有两个参数的构造方法,用于将width和height属性初化; 2.一个不带参数的构造方法,将矩形初始化为宽和高都为10。 两个方法: 求矩形面积的方法area() 求矩形周长的方法perimeter() (2)通过继承Rect类编写一个具有
  4. 41. Unique Binary Search Trees &amp;&amp; Unique Binary Search Trees II
  5. ZendStudio中设置SVN:ignore
  6. easyui源码翻译1.32--TimeSpinner(时间微调)
  7. [转]关于 Swift 的一点初步看法
  8. Docker容器发布spring boot项目
  9. tcpdump 交叉编译
  10. HTML字体自动换行第二行缩进一格
  11. 23.Hibernate-基础.md
  12. iOS逆向之class-dump
  13. Ehcache Monitor使用一例
  14. Android studio 3+版本apk安装失败问题
  15. 【java编程】重写HashCode和equals方法
  16. Mkdir方法
  17. nginx main函数
  18. DRBD安装配置、工作原理及故障恢复
  19. FIRST GAME.
  20. CH6201走廊泼水节

热门文章

  1. ACE bus
  2. linux Centos下搭建gitolite服务器
  3. diff输出格式解析
  4. linux命令行中单个减号表示标准输入输出流
  5. Tanks坦克大战
  6. mysql 增删改查最基本用法小结
  7. ThinkPHP的异步搜索
  8. 161226、js日期格式化
  9. css+div解决文字溢出控制显示字数
  10. selenium-JS点击(项目应用)