搭建好thinkphp框架,浏览器输入url访问时,总会先访问入口文件index.php
比如我在模块 test 下有个 index.php 的控制器,控制器里面有两个方法,一个 index,一个 demo.
在不加其他路的情况下,即不在route.php中配置路由规则的情况下:
访问这两个方法的正确url格式是:
http://mydomain.com/index.php/test/index/index #访问index方法
http://mydomain.com/index.php/test/index/demo #访问demo方法
两者都会正确输出,可是我们总觉得这种url格式有点碍眼,不人性化,因为中间多了个index.php,但如果去掉中间的index.php的话,访问就会报错,这时候该怎么解决呢?
经过研究,解决办法如下:
- apache作为web服务器:
- httpd.conf配置文件中加载了mod_rewrite.so模块
- AllowOverride None 将None改为 All #有3处,全部要改
- 把下面的内容保存为.htaccess文件放到应用入口文件的同级目录下
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
</IfModule>
- nginx作为web服务器:
- 在相应的conf文件中添加如下代码:
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
break;
}
}
按照以上添加之后,重启服务器,再次访问就可以把url中的index.php去掉了。