第一步:
把你的TP项目的URL_MODEL设为2,'URL_MODEL' => '2',即pathinfo的增强版,rewrite模式,不了解的可以看一下我这篇博文:
一、IIS 6.0服务器实现Rewrite模式隐藏index.php重写url的方法:
1. 下载ISAPI_Rewrite3插件,地址:http://www.helicontech.com/isapi_rewrite/download.html
2. 安装完成后,进入IIS服务器管理界面,点击你要管理的网站站点—属性—添加ISAPI筛选器
浏览选择你的ISAPI_rewrite3安装目录下的rewrite.dll确定保存即可
3. 配置好重启一下 IIS,一定要重启哟,不然木效果了。下一步就是最关键的时刻了,编写重写规则
4. 打开ISAPI_rewrite3安装目录下的httpd.ini文件,在文件中添加如下规则
[ISAPI_Rewrite]# 3600 = 1 hourCacheClockRate 3600RepeatLimit 32RewriteRule (?!\/Public)(?!\/phpMyAdmin)(.*)$ /index\.php/$1 [I]
RewriteRule的规则中(?!\/xx)的作用为排除/xx目录,防止当我们请求的是image,css,js等文件时进行url重写,那就木办法正常载入了,(.*)$为正则,这里是匹配所有的url请求, /index\.php/$1的作用为将与(.*)匹配的url请求重写到index.php/url。
这里要理解我们在请求http://www.test.com/rewrite/test时实际上是像www.test.com的服务器发送了rewrite/test的请求,所以这规则里面(.*)匹配的到的是rewrite/test,$1指向匹配规则中的第一个匹配值,重写成index.php/rewrite/test,这是虽然我们看到的是http://www.test.com/rewrite/test的路径请求,但此时服务器内部的请求为http://www.test.com/index.php/rewrite/test,便可做出正确的响应,实现重写,伪静态等功能,如果还需要其他的高级规则可以去百度学习下rewrite规则的教程,这里就不再多说了。
二、IIS 7.0服务器实现Rewrite模式隐藏index.php重写url的方法:
高版本IIS服务器就不需要安装额外的插件了,可以在网站根目录下配置web.config文件实现url重写伪静态等功能。
依旧是隐藏index.php的规则,复杂的还是自己学习如何编写,这里不再多说。
三、Apache实现Rewrite模式隐藏index.php重写url的方法:
其实Apache真心好用,管理起来也不复杂,下面来说一下如何实现重写规则
1.httpd.conf配置文件中加载了mod_rewrite.so模块
LoadModule rewrite_module modules/mod_rewrite.so
2.AllowOverride None 讲None改为 All 在APACHE里面去配置 (注意其他地方的AllowOverride也统统设置为ALL)
<Directory>
AllowOverride ALL Options None Order allow,deny Allow from all </Directory>3.保存到.htaccess文件下
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
OK了,可以实现伪静态咯