ThinkPHP隐藏index.php的方法汇总【IIS/Apache/Nginx】

第一步:

把你的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 hour
CacheClockRate 3600

RepeatLimit 32

RewriteRule (?!\/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重写伪静态等功能。

  <rewrite>
    <rules>
        <rule name="OrgPage" stopProcessing="true">
            <match url="^(.*)$" />
                <conditions logicalGrouping="MatchAll">
                    <add input="{HTTP_HOST}" pattern="^(.*)$" />
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                </conditions>
            <action type="Rewrite" url="index.php/{R:1}" />
        </rule>
    </rules>
  </rewrite>

依旧是隐藏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文件下

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



OK了,可以实现伪静态咯

转载于:https://my.oschina.net/sallency/blog/367716

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值