路由

<br/> >i 本文档的最新修订日期是: > **2023-09-27** # 入口文件 <font color="#c7254e">`/index.php`</font> # 伪静态规则 <font color="#c7254e">`/lib/rewrite`</font> 下包含了伪静态规则,可根据需要自行调整。 * Apache环境下,请将 <font color="#c7254e">`.htaccess`</font> 文件放置于网站根目录,在Apache的配置文件中开启URL重写选项之后即可使用。 * Nginx环境下,请将 <font color="#c7254e">`apiphp.conf`</font> 文件引入到Nginx的配置文件 <font color="#c7254e">`nginx.conf`</font> 中,也可以将apiphp.conf中的代码插入到nginx.conf中的合适位置。 * 如果有额外需求,可根据需要自行调整伪静态规则。 规则仅允许访问 <font color="#c7254e">`/asset`</font> 下非PHP类型的文件,除此之外的流量将牵引至 <font color="#c7254e">`/index.php`</font> 。 # 路由 * 访问请求时,服务器将首先判断访问的路径是否为 <font color="#c7254e">`/asset`</font> 目录下的文件,如果有则停止后续操作。假设有文件 <font color="#c7254e">`/asset/css/style.css`</font> ,则直接访问 <font color="#c7254e">`域名/asset/css/style.css`</font> 即可。 以上步骤由服务器的伪静态规则完成,如果未能找到文件,将由框架执行接下来的步骤: * 框架将会首先尝试在缓存目录中下以 <font color="#c7254e">`访问路径.php`</font> 查找文件。 例如访问 <font color="#c7254e">`abc.com/auth/login`</font> 时,框架会判断代码模板文件 <font color="#c7254e">`/source/auth/login.php`</font> 是否存在,若存在则运行对应的缓存,即 <font color="#c7254e">`/temp/cache/auth/login.php`</font> 。 * 若未找到文件,会寻找 <font color="#c7254e">`/asset`</font> 内对应路径下的 <font color="#c7254e">`index.html`</font> 。 例如访问 <font color="#c7254e">`abc.com/auth/login`</font> 时,若 <font color="#c7254e">`/source/auth/login.php`</font> 不存在,则框架会寻找文件 <font color="#c7254e">`/asset/auth/login/index.html`</font> 。 * 若未找到文件,则会寻找 <font color="#c7254e">`/asset`</font> 内对应路径下的文件。 例如访问 <font color="#c7254e">`abc.com/js/app.js`</font> 时,若 <font color="#c7254e">`/source/js/app.js.php`</font> 不存在,则框架会寻找文件 <font color="#c7254e">`/asset/js/app.js`</font> 。 仍找不到文件时,将触发报错。 >d 出于安全考虑,请勿设置任何php后缀的文件名作为站点的默认首页。 >i 处于兼容考虑,例如文件 <font color="#c7254e">`/asset/js/app.js`</font> ,通过 <font color="#c7254e">`abc.com/js/app.js`</font> 和 <font color="#c7254e">`abc.com/asset/js/app.js`</font> 均可成功访问,但前者的效率不如后者高,因此在高并发项目中应尽量写全静态资源路径。 # Hook * **<font color="#ff6600">`apiphp_initial_route`</font>** <font color="#0099ff">`/lib/core/Initial.php`</font> <font color="#bbbbbb">`需要返回`</font> : 在框架初始化过程中框架定义常量 <font color="#c7254e">`_URI`</font> 之前,于 <font color="#c7254e">`Initial::route()`</font> 中被调用。 需要返回与传入元素结构一致的数组用于框架定义常量 <font color="#c7254e">`_URI`</font> ,并执行后续操作。 传入的参数: * **<font color="#ff6600">`uri`</font>** <font color="#0099ff">`String`</font> <font color="#bbbbbb">`当前请求的URI`</font>