请问一下大佬webman怎么才能支持路由映射

yookey

问题描述

如:admin应用正常情况下访问为:
www.yourweb.com/admin
www.yourweb.com/admin/index
www.yourweb.com/admin/index/index
www.yourweb.com/admin/xyz/...

如果做了映射后 admin => admin123
那么就只能这样访问
www.yourweb.com/admin123
www.yourweb.com/admin123/index
www.yourweb.com/admin123/index/index
www.yourweb.com/admin123/xyz/...

而原来以 admin 为前缀的路由 则禁止访问 或 返回 404

298 2 0
2个回答

latin

用nginx重写地址,让AI给你写就搞定了

  • yookey 2024-10-15

    谢谢回复,这样应该是行不通的

  • latin 2024-10-15
    server {
        listen 80;
        server_name www.yourweb.com;
    
        location = /admin123 {
            rewrite ^/admin123$ /admin redirect;
        }
    
        location /admin123/ {
            rewrite ^/admin123/(.*)$ /admin/$1 last;
        }
    
        location = /admin {
            return 403;
        }
    
        location = /admin/ {
            return 403;
        }
    
         #... 其它配置...
    }

    替你问了。
    效果就是浏览器访问 www.yourweb.com/admin123/xxx nginx重定向为 www.yourweb.com/admin/xxx
    浏览器访问 www.yourweb.com/admin/xxx 会返回404

  • latin 2024-10-15

    这样php代码不用改,前端访问 www.yourweb.com/admin/xxx 的都要改为 www.yourweb.com/admin123/xxx

  • yookey 2024-10-16

    好的,感谢感谢,我试一下

  • yookey 2024-10-16

    大佬,这个对于知道后台路由的还是能够访问,比如知道:admin/index/index 还是能够访问到首页 (虽然 /admin 和 /admin/ 是阻断了)。在没登录情况下,并且还会调转到的 admin123/login/login,从而又暴露后台地址

  • yookey 2024-10-16

    能有像TP框架的应用映射就好了

  • latin 2024-10-16

    跳转是登录态判断问题,和映射没关系啊。
    弄个中间件拦截下,没登录态不跳转就好了。这个和映射没关系了。

  • yookey 2024-10-16

    暂时这样用着,谢谢了哈!

yookey
// 本想这样写路由
Route::any('/admin123', [app\admin\controller\Index::class, 'index']);
// 但这里有个问题,其他后台管理的地址路由全部都得绑定一遍,有点不实际哈

// 以下禁止admin开头的访问
Route::any('/admin[{path:.+}]', function(){return not_found();});
  • 暂无评论
×
🔝