php框架 - PHP项目入口文件为什么放在子目录
程序员文章站
2022-05-15 12:57:56
...
最近看到一些框架php的入口文件都放在了子目录,比如tp5框架入口文件在程序包的public目录中,还有五指cms入口文件也不在程序的根目录中,而是在文件的一个子目录中,这样的话就要吧域名绑定到程序的子目录中,本人奇怪的是为什么要把入口文件放在程序的子目录中呢,这样做有什么好处,而且这好像是一种趋势,求科普!
回复内容:
最近看到一些框架php的入口文件都放在了子目录,比如tp5框架入口文件在程序包的public目录中,还有五指cms入口文件也不在程序的根目录中,而是在文件的一个子目录中,这样的话就要吧域名绑定到程序的子目录中,本人奇怪的是为什么要把入口文件放在程序的子目录中呢,这样做有什么好处,而且这好像是一种趋势,求科普!
这些框架一般都是单一入口的(index.php),而为了实现单一入口,就需要进行 rewrite 定向,但是这样就遇到一个问题:如何处理静态资源文件(图片,css,js等)。
最通用最简单的方法时通过服务器程序在重写前判断访问文件是否存在来实现,这样只需要一两行代码即可解决上述问题。但是这样做之后,如果再把资源文件和代码文件放在同一目录下,那还是会破坏入口的单一性(因为程序文件也被检查到存在,最后直接访问到程序文件了),所有这些框架不约而同的把资源文件和程序文件区分开来,放在了不同的文件夹下。从整体来看,也就是为什么入口会在子目录下了。
安全考虑,只暴露对外公开的部分就够了。
这样的框架可能还需要配合使用web服务器的rewrite, 把所有请求重定向到框架的router入口
这样最终用户看到的url的path是个有意义的自然语言短语, 而不是?pid=1234&sort=date