webman的多应用下面的route如何配置呢

fuzhou_ke

webman的多应用下面的route如何配置呢,我在config/route下面配置的路由都不能访问

933 1 1
1个回答

damao

webman 直接就支持多应用,不用配置路由。
默认支持 /应用/控制器/方法 比如 /admin/user/login 这样的默认路由,

  • fuzhou_ke 2022-05-26

    主要是我配置了短url,就是我的域名在nginx那边有映射过了,导致现在在route里面配置的路由都不能使用
    if ($host = 'www.shop.com') {
    rewrite ^/(.*)$ /home/$1 last;
    }

    根据域名重写url

    if ($host = 'blog.shop.com') {
        rewrite ^/(.*)$ /blog/$1 last;
    }
    # 根据域名重写url
    if ($host = 'admin.shop.com') {
        rewrite ^/(.*)$ /admin/$1 last;
    }
  • fuzhou_ke 2022-05-26

    现在我在config里面的route里面配置的
    Route::any('/test', function ($request) {
    return response('test');
    });
    像这样的就读不了

  • fuzhou_ke 2022-05-26

    比如我想www.shop.com/test,就可以访问上面配置的那样的闭包的,现在访问都是404

  • damao 2022-05-26

    你重定向到二级目录了,当然访问不了。
    比如访问的是 blog.shop.com/test ,根据nginx配置实际访问的是blog.shop.com/blog/test,所以路由配置感觉应该是

    Route::any('/blog/test', function ($request) {
        return response('test');
    });

    才对啊

  • fuzhou_ke 2022-05-26

    这个刚才我就在config/route里面配置过了也是/home/test这个,也是报404,然后我才改的/test,现在不管访问www.shop.com/test还是www.shop.com/home/test都是404,头大啊

  • damao 2022-05-26

    confit/route.php 里加一个fallback,访问看下实际的请求域名和路径

    Route::fallback(function(Request $request){
        return $request->host().$request->path();
    });
  • fuzhou_ke 2022-05-27

    www.shop.com/home/test, 返回的是这个,但是我在前面设置了,就是不走前面那个路由,实在是没有办法了
    use Webman\Route;

    Route::any('/home/test',function ($request){
    return 'hello test 18';
    });

    Route::fallback(function($request){
    return $request->host().$request->path();
    });

  • damao 2022-05-27

    nginx不做重定向试下是否正常

  • fuzhou_ke 2022-05-27

    我现在把配置文件里面的配置关掉
    'enable' => false, // 是否开启插件
    现在是可以了,但是还有一个问题就是这个route,
    如果我的手机端有一个应用是m,pc端也有一个应用是home,
    现在我在config/route里面配置的都是在homo端口生效,如何指定某个应用生效

  • fuzhou_ke 2022-05-27

    终于都解决了,还是要在route里面把应用名称也带上
    Route::any('/home/test',function ($request){
    return 'hello test 18';
    });

    Route::any('/mobile/test',function ($request){
    return 'hello test 20';
    });

    Route::fallback(function($request){
    return $request->host().$request->path();
    });
    这样访问www.shop.com的时候返回 hello test 18
    访问m.shop.com的时候返回 hello test 20
    还有一个配置就是在plugin/webman/domain/app.php这个配置文件里面的
    enable要设置为false
    然后在nginx里面重写一下规则,就可以实现手机端访问www.shop.com的时候重定向到手机端的m.shop.com
    如果设置是手机,访问的是www.shop.com电脑端口的时候,会重定向到手机端口。搞了大半天终于解决了。
    大兄弟,谢谢啊

年代过于久远,无法发表回答
🔝