You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Strapi根路径301永久重定向到/admin后台登录页

Strapi根路由301重定向到/admin不生效的解决方案

你之前的配置不生效核心原因是:./admin目录下的自定义中间件仅作用于带/admin前缀的管理后台路由,根路径/不属于admin路由的处理范围,因此不会触发你写的重定向逻辑。


方案1:使用全局自定义中间件(适用Strapi v4,推荐)

步骤1:创建全局中间件文件

路径:./src/middlewares/root-redirect.js
代码内容:

module.exports = (config, { strapi }) => {
  return async (ctx, next) => {
    // 匹配GET请求的根路径
    if (ctx.path === '/' && ctx.method === 'GET') {
      // 设置301永久重定向状态码,默认redirect是302临时重定向
      ctx.status = 301;
      return ctx.redirect(strapi.config.get('server.admin.url', '/admin'));
    }
    await next();
  };
};

步骤2:注册全局中间件

修改全局中间件配置文件,路径:./config/middlewares.js,将你刚写的中间件放在数组最顶部,优先级高于静态资源处理中间件,避免被默认静态页拦截:

module.exports = [
  './src/middlewares/root-redirect', // 放在第一行
  'strapi::errors',
  'strapi::security',
  'strapi::cors',
  'strapi::poweredBy',
  'strapi::logger',
  'strapi::query',
  'strapi::body',
  'strapi::session',
  'strapi::favicon',
  'strapi::public',
];

配置完成后重启Strapi服务即可生效。


方案2:Strapi v3适配方案

如果是v3版本,创建全局中间件路径为./middlewares/redirect/index.js,代码如下:

module.exports = strapi => {
  return {
    initialize() {
      strapi.router.get('/', async (ctx) => {
        ctx.status = 301;
        ctx.redirect(strapi.config.get('server.admin.url', '/admin'));
      });
    }
  };
};

然后修改./config/middleware.js,配置中间件加载,注意要放在serve中间件之前:

module.exports = {
  load: {
    before: ['redirect', 'router', 'serve'],
  },
  settings: {
    redirect: {
      enabled: true,
    },
  },
};

内容的提问来源于stack exchange,提问作者Doug Niccum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 11:15:04