URL和路由-路由
昨天有个疑惑,但是这张图成功的帮我解惑。
用户访问网站的时候,都是从public中的index.php入口。然后利用里面的路由规则,决定去访问哪个模块哪个控制器哪个方法。
关于url地址的几个特点:
利用thinkphp5开发的网站,如果服务器环境支持pathinfo,那么www.xxx.com/index/index/index 这样的方式将会访问到对应的方法。而起,奇怪的是,通过做实验发现,模块、控制器、方法,这三者中,只有控制器的开头字母会默认转换成首字母大写。其他的都直接是转换成小写,不管你在URL栏里面输入的是大写和小写,它都会给你进行转换。因此,我前一节理解的通过大小写来判断目标是linux系统和windows系统,在面对thinkphp5框架的时候,可能就要失效了!
在thinkphp5的配置文件config.php中,可以看到框出来的部分能设置是否转换控制器和操作名。如果开启了,那么就会将用户输入的url进行某些部位的大小写转换。比如将控制器的头部变成大写,其他的全部变成小写。默认情况下是ture开启的。因此假如控制器名字为HelloWorld,那么在url栏就得输入Hello_World才可以访问。(hello_World貌似也行。总之就是那个意思)
如果变成了false,那么就可以看到输入的控制器中后面的大写字母将不会转换成小写
之所以像上面这种访问方式能够访问,全是因为apache的一个.htaccess文件和thinkphp5框架的原因。如果将.haccess文件删除,那么上面的的 模块名/控制器/方法 这样的访问方式就会失效。只有传统的文件路径一样的访问方式能使用。
apache中,像www.xxx.com/模块/控制器/方法 这样的访问方式可以隐藏index.php,可以说更安全一点。apache隐藏的方法就在.htaccess中。
但是,phpstudy貌似不是这样的,因此,可能需要自己像上图这样给phpstudy的配置文件进行配置