我使用的是 apache + phalcon(PHP框架),配置了框架的路由规则。访问的时候既能通过文件夹路径直接访问,也能t通过路由规则匹配访问,我想弄明白apache怎么处理这些请求的,底层的实现原理是什么?
人生最曼妙的风景,竟是内心的淡定与从容!
访问的时候既能通过文件夹路径直接访问,也能t通过路由规则匹配访问。我是想问apache分发请求的时候,是按照什么顺序?
在这两种情况中,并不存在分发请求的问题,因为这本身就是两个不一样的请求。
对于路由规则的这个请求来说,Apache会先到项目根目录下寻找 .htaccess 配置文件,找到之后读取其中的信息。在本项目中, .htaccess中写的应该是非静态文件全部指向index.php。
.htaccess
非静态文件全部指向index.php
回到刚才你的问题:
通过文件夹路径直接访问说明Apache找到了这个“静态文件”,就是那个目标php文件。
通过路由规则匹配的URL访问,Apache会发现这个静态文件不存在,就会把请求指向index.php,这时候请求就由PHP代码接管,去匹配路由规则,处理页面。
index.php
在这两种情况中,并不存在分发请求的问题,因为这本身就是两个不一样的请求。
对于路由规则的这个请求来说,Apache会先到项目根目录下寻找
.htaccess
配置文件,找到之后读取其中的信息。在本项目中,.htaccess
中写的应该是非静态文件全部指向index.php
。回到刚才你的问题:
通过文件夹路径直接访问说明Apache找到了这个“静态文件”,就是那个目标php文件。
通过路由规则匹配的URL访问,Apache会发现这个静态文件不存在,就会把请求指向
index.php
,这时候请求就由PHP代码接管,去匹配路由规则,处理页面。