{"message":"controller not exists:tags-23","status":500,"data":[],"debug":{"name":"think\\exception\\HttpException","file":"\/www\/wwwroot\/www.joyopi.com\/www\/vendor\/topthink\/framework\/src\/think\/route\/dispatch\/Url.php","line":62,"code":0,"message":"控制器不存在:tags-23","trace":[{"file":"\/www\/wwwroot\/www.joyopi.com\/www\/vendor\/topthink\/framework\/src\/think\/route\/dispatch\/Url.php","line":31,"function":"parseUrl","class":"think\\route\\dispatch\\Url","type":"->"},{"file":"\/www\/wwwroot\/www.joyopi.com\/www\/vendor\/topthink\/framework\/src\/think\/Route.php","line":857,"function":"__construct","class":"think\\route\\dispatch\\Url","type":"->"},{"file":"\/www\/wwwroot\/www.joyopi.com\/www\/vendor\/topthink\/framework\/src\/think\/Route.php","line":777,"function":"url","class":"think\\Route","type":"->"},{"file":"\/www\/wwwroot\/www.joyopi.com\/www\/vendor\/topthink\/framework\/src\/think\/Http.php","line":216,"function":"dispatch","class":"think\\Route","type":"->"},{"file":"\/www\/wwwroot\/www.joyopi.com\/www\/vendor\/topthink\/framework\/src\/think\/Http.php","line":206,"function":"dispatchToRoute","class":"think\\Http","type":"->"},{"file":"\/www\/wwwroot\/www.joyopi.com\/www\/vendor\/topthink\/framework\/src\/think\/Pipeline.php","line":59,"function":"think\\{closure}","class":"think\\Http","type":"->"},{"file":"\/www\/wwwroot\/www.joyopi.com\/www\/vendor\/topthink\/think-multi-app\/src\/MultiApp.php","line":65,"function":"think\\{closure}","class":"think\\Pipeline","type":"->"},{"function":"handle","class":"think\\app\\MultiApp","type":"->"},{"file":"\/www\/wwwroot\/www.joyopi.com\/www\/vendor\/topthink\/framework\/src\/think\/Middleware.php","line":142,"function":"call_user_func"},{"file":"\/www\/wwwroot\/www.joyopi.com\/www\/vendor\/topthink\/framework\/src\/think\/Pipeline.php","line":85,"function":"think\\{closure}","class":"think\\Middleware","type":"->"},{"file":"\/www\/wwwroot\/www.joyopi.com\/www\/app\/common\/middleware\/AllowCrossDomain.php","line":88,"function":"think\\{closure}","class":"think\\Pipeline","type":"->"},{"function":"handle","class":"app\\common\\middleware\\AllowCrossDomain","type":"->"},{"file":"\/www\/wwwroot\/www.joyopi.com\/www\/vendor\/topthink\/framework\/src\/think\/Middleware.php","line":142,"function":"call_user_func"},{"file":"\/www\/wwwroot\/www.joyopi.com\/www\/vendor\/topthink\/framework\/src\/think\/Pipeline.php","line":85,"function":"think\\{closure}","class":"think\\Middleware","type":"->"},{"file":"\/www\/wwwroot\/www.joyopi.com\/www\/vendor\/topthink\/think-trace\/src\/TraceDebug.php","line":71,"function":"think\\{closure}","class":"think\\Pipeline","type":"->"},{"function":"handle","class":"think\\trace\\TraceDebug","type":"->"},{"file":"\/www\/wwwroot\/www.joyopi.com\/www\/vendor\/topthink\/framework\/src\/think\/Middleware.php","line":142,"function":"call_user_func"},{"file":"\/www\/wwwroot\/www.joyopi.com\/www\/vendor\/topthink\/framework\/src\/think\/Pipeline.php","line":85,"function":"think\\{closure}","class":"think\\Middleware","type":"->"},{"file":"\/www\/wwwroot\/www.joyopi.com\/www\/vendor\/topthink\/framework\/src\/think\/Pipeline.php","line":66,"function":"think\\{closure}","class":"think\\Pipeline","type":"->"},{"file":"\/www\/wwwroot\/www.joyopi.com\/www\/vendor\/topthink\/framework\/src\/think\/Http.php","line":207,"function":"then","class":"think\\Pipeline","type":"->"},{"file":"\/www\/wwwroot\/www.joyopi.com\/www\/vendor\/topthink\/framework\/src\/think\/Http.php","line":170,"function":"runWithRequest","class":"think\\Http","type":"->"},{"file":"\/www\/wwwroot\/www.joyopi.com\/www\/public\/index.php","line":14,"function":"run","class":"think\\Http","type":"->"}],"source":{"first":53,"source":[" $path = $this->rule->parseUrlPath($url);\n"," if (empty($path)) {\n"," return [null, null];\n"," }\n","\n"," \/\/ 解析控制器\n"," $controller = !empty($path) ? array_shift($path) : null;\n","\n"," if ($controller && !preg_match('\/^[A-Za-z0-9][\\w|\\.]*$\/', $controller)) {\n"," throw new HttpException(404, 'controller not exists:' . $controller);\n"," }\n","\n"," \/\/ 解析操作\n"," $action = !empty($path) ? array_shift($path) : null;\n"," $var = [];\n","\n"," \/\/ 解析额外参数\n"," if ($path) {\n"," preg_replace_callback('\/(\\w+)\\|([^\\|]+)\/', function ($match) use (&$var) {\n"]}}}