webman-php / domain

webman domain plugin
https://www.workerman.net/webman
MIT License
8 stars 0 forks source link

当short_url为true时遇到的问题 #1

Closed kalepan closed 2 years ago

kalepan commented 2 years ago

你好,当short_url为true时, 如果每个域名下有相同的控制器和方法时, 会报错 配置: image 报错: `$ php start.php ----------------------- WORKERMAN ----------------------------- Workerman version:4.0.30 PHP version:8.1.0 ------------------------ WORKERS ------------------------------- worker listen processes status webman http://0.0.0.0:8787 2 [ok] FastRoute\BadRouteException: Cannot register two routes matching "/index" for method "GET" in D:\test\vendor\nikic\fast-route\src\DataGenerator\RegexBasedAbstract.php:86 Stack trace:

0 D:\test\vendor\nikic\fast-route\src\DataGenerator\RegexBasedAbstract.php(30): FastRoute\DataGenerator\RegexBasedAbstract->addStaticRoute('GET', Array, Array)

1 D:\test\vendor\nikic\fast-route\src\RouteCollector.php(44): FastRoute\DataGenerator\RegexBasedAbstract->addRoute('GET', Array, Array)

2 D:\test\vendor\workerman\webman-framework\src\Route.php(301): FastRoute\RouteCollector->addRoute(Array, '/index', Array)

3 D:\test\vendor\workerman\webman-framework\src\Route.php(160): Webman\Route::addRoute(Array, '/index', Array)

4 D:\test\config\plugin\webman\domain\route.php(61): Webman\Route::any('/index', Array)

5 D:\test\config\plugin\webman\domain\route.php(77): Webman\Route::{closure}('/index', Array)

6 D:\test\vendor\workerman\webman-framework\src\Route.php(332): require_once('D:\wamp64\www\k...')

7 D:\test\vendor\nikic\fast-route\src\functions.php(25): Webman\Route::Webman{closure}(Object(Closure))

8 D:\test\vendor\workerman\webman-framework\src\Route.php(334): FastRoute\simpleDispatcher(Object(Closure))

9 D:\test\support\bootstrap.php(81): Webman\Route::load('D:\wamp64\www\k...')

10 D:\test\start.php(70): require_once('D:\wamp64\www\k...')

11 D:\test\vendor\workerman\workerman\Worker.php(2418): {closure}(Object(Workerman\Worker))

12 D:\test\vendor\workerman\workerman\Worker.php(1430): Workerman\Worker->run()

13 D:\test\vendor\workerman\workerman\Worker.php(1373): Workerman\Worker::forkWorkersForWindows()

14 D:\test\vendor\workerman\workerman\Worker.php(549): Workerman\Worker::forkWorkers()

15 D:\test\start.php(90): Workerman\Worker::runAll()

16 {main}

`

kalepan commented 2 years ago

FastRoute\BadRouteException: Cannot register two routes matching "/index" for method "GET" in D:\test\vendor\nikic\fast-route\src\DataGenerator\RegexBasedAbstract.php:86 报错创建了相同的路由

walkor commented 2 years ago

这个目前没办法解决,用nginx重写url吧。

server {
    listen 80;
    server_name admin.abc.com;
    root /your/webman/public;

    if (!-e $request_filename) {
        rewrite ^/(.*)$ /admin/$1 break;
    }
    location / {
        proxy_pass http://127.0.0.1:8787/;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
    }
}
kalepan commented 2 years ago

谢谢回复和指导.