$path = $this->rule->parseUrlPath($url);if (empty($path)) {return [null, null];}// 解析控制器$controller = !empty($path) ? array_shift($path) : null;if ($controller && !preg_match('/^[A-Za-z0-9][\w|\.]*$/', $controller)) {throw new HttpException(404, 'controller not exists:' . $controller);}// 解析操作$action = !empty($path) ? array_shift($path) : null;$var = [];// 解析额外参数if ($path) {preg_replace_callback('/(\w+)\|([^\|]+)/', function ($match) use (&$var) {
| USER | www |
| HOME | /home/www |
| HTTP_REFERER | http://singular.fictionalpursuits.com/ |
| HTTP_CONNECTION | keep-alive |
| HTTP_ACCEPT | */* |
| HTTP_ACCEPT_ENCODING | gzip, deflate |
| HTTP_USER_AGENT | Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.93 Safari/537.36 |
| PATH_INFO | |
| HTTP_HOST | singular.fictionalpursuits.com |
| REDIRECT_STATUS | 200 |
| SERVER_NAME | singular.fictionalpursuits.com |
| SERVER_PORT | 443 |
| SERVER_ADDR | 172.20.135.126 |
| REMOTE_PORT | 45354 |
| REMOTE_ADDR | 38.34.175.25 |
| SERVER_SOFTWARE | nginx/1.26.3 |
| GATEWAY_INTERFACE | CGI/1.1 |
| HTTPS | on |
| REQUEST_SCHEME | http |
| SERVER_PROTOCOL | HTTP/1.1 |
| DOCUMENT_ROOT | /www/wwwroot/singular.fictionalpursuits.com/public |
| DOCUMENT_URI | /index.php |
| REQUEST_URI | /donor-wall |
| SCRIPT_NAME | /index.php |
| CONTENT_LENGTH | |
| CONTENT_TYPE | |
| REQUEST_METHOD | GET |
| QUERY_STRING | s=/donor-wall |
| SCRIPT_FILENAME | /www/wwwroot/singular.fictionalpursuits.com/public/index.php |
| FCGI_ROLE | RESPONDER |
| PHP_SELF | /index.php |
| REQUEST_TIME_FLOAT | 1762892903.2686 |
| REQUEST_TIME | 1762892903 |