将 Strapi 管理员索引重定向到管理员登录

Redirect Strapi admin index to admin login

我目前正在寻找创建从默认 Strapi 管理索引路由(即 strapidomain.com)到配置的管理路由(即 strapidomain.com/admin)的永久 301 重定向的方法。

我探索了如何通过配置管理包来使用自定义中间件:

路径:./admin/middlewares/redirect/index.js

const path = require('path');

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

然后我激活了自定义中间件:

路径:./admin/config/middleware.js

module.exports = {
  settings: {
    redirect: {
      enabled: true
    }
  }
}

不幸的是,我仍然可以在不被重定向的情况下访问管理面板路由。根据我所阅读的所有内容,这应该是可能的,但我无法让它工作。

想法?

这里唯一的问题是您只是将重定向中间件放在了绝对不需要的 admin 文件夹中。 middlewares 文件夹应直接位于项目的根目录下。

更正路径来自:
./admin/middlewares/redirect/index.js

为此:
./middlewares/redirect/index.js

我可以在下面向您展示我亲自尝试过的方法:

我的实现:

1. 在项目的根目录中创建一个目录
$ mkdir -p ./middlewares/redirector/

2../middlewares/redirector/中创建一个index.js文件,内容为:

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

3.最后在config/middleware.js文件中启用重定向器中间件:

module.exports = {
  settings: {
    redirector: {
      enabled: true,
    },
  },
};

对于较新的版本 v4+

src/middlewares/redirector.js

module.exports = (config, {strapi}) => {
  return async (ctx, next) => {
    if (ctx.path === '/') {
      ctx.redirect(strapi.config.get('server.admin.url', '/admin'));
      return
    }
    await next()
  };
};

config/middlewares.js

module.exports = [
  {name: 'global::redirector'},
  //...
]