入口文件是应用的单一入口,对应用的所有请求都定向到应用入口文件,系统会从URL参数中解析当前请求的分组(模块)、控制器和操作。
①普通模式(get模式)
示例:http://www.tpshop.com/index.php?m=Home&c=Test&a=index&id=100&page=10
格式:http://域名/入口文件?m=分组&c=控制器名称&a=操作方法名称&参数名=参数值
②pathinfo模式
示例:http://www.tpshop.com/index.php/Home/Test/index/id/100/page/10
格式:http://域名/入口文件/分组/控制器名称/操作方法名称/参数名/参数值
③rewrite模式
示例:http://www.tpshop.com/Home/Test/index/id/100/page/10
格式:http://域名/分组/控制器名称/操作方法名称/参数名/参数值
特点:就像是直接访问的某些目录下的文件。
这种模式的使用需要做一些设置:
1)把.htaccess文件移动到项目目录下
![](https://img-blog.csdn.net/20170812000521958?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2VpeGluXzM4ODQ5ODcx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2)打开apache主配置文件,确保所有的AllowOverride配置项的值是All
打开虚拟主机的配置文件:确保AllowOverride配置项的值是All
打开mod_rewrite.so的扩展(删除最前面的#号即可)
![](https://img-blog.csdn.net/20170812000716623?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2VpeGluXzM4ODQ5ODcx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2)重启apache,重新在浏览器运行,正常应该可以直接访问成功
3)如果出现以下提示(一般使用集成环境时比如phpstudy会出现):
![](https://img-blog.csdn.net/20170812000747741?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2VpeGluXzM4ODQ5ODcx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
需要更改.htaccess中的一个小地方:
默认的.htaccess:
修改后:
访问效果:
![](https://img-blog.csdn.net/20170812000936516?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2VpeGluXzM4ODQ5ODcx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
④兼容模式
示例:http://www.tpshop.com/index.php?s=/Home/Test/index&id=100&page=10
格式:http://域名/入口文件?s=/分组名称/控制器名称/方法名&参数名=参数值
这四种模式都可以正常使用,互相不影响。
对于这四种模式,在主配置文件中有一项相关配置,默认设置为pathinfo模式