PHP MVC 风格的路由器通常处理这样的请求index.php?route=one/two/three...
- 由正斜杠分隔的查询字符串为系统提供了一条可遵循的路线(例如文件夹 > 文件 > 功能,或公司 > 部门 > 程序 > 操作)。
一个示例请求是:
GET http://localdomain/user/profile/modify
> /index.php?route=user/profile/modify
> /user/profile.php
> modify()
考虑到所有这些,我编写了我的 nginx 服务器配置,如下所示:
set $i /index.php;
location ~ ^/([a-z0-9-]*)$ { rewrite ^/([a-z0-9-]*)$ $i?route=$1 last; }
location ~ ^/([a-z0-9-]*)/?([a-z0-9-]*)$ { rewrite ^/([a-z0-9-]*)/?([a-z0-9-]*)$ $i?route=$1/$2 last; }
location ~ ^/([a-z0-9-]*)/?([a-z0-9-]*)/?([a-z0-9-]*)$ { rewrite ^/([a-z0-9-]*)/?([a-z0-9-]*)/?([a-z0-9-]*)$ $i?route=$1/$2/$3 last; }
正则表达式的最佳实践要求我将其更改为能够处理 1 个或多个参数的单行(可能通过使用中继器)。我的正则表达式知识有限,我该怎么做?