Для рендеринга использую Pug.
Вариант 1:
app.use(async (ctx, next) => {
if (ctx.status === 404) {// always is 404
ctx.redirect('/node/404');
}
await next();
});
Используется мидлвер для ловли отсутсвующих страниц, но у коа статус всегда 404, если его не изменить в ручную. Соответственно редирект будет происходить с любой страницы. Но! Страница, на которую редиректит, вообще не рендерится, а nginx (он для статики) выдает "this page unreachable".
Вариант 2:
const router = new Router({prefix: 'auth'});
router.post('/signin', authController.signIn);
async signIn(ctx) {
// проверяю параметры и по их результатам делаю редирект
ctx.redirect('/node');
},
В этом случае вместо редиректа я получаю в теле ответа html отрендеринной страницы, на которую, собсно, и
должен происходить редирект (как будто делаю ctx.body = {data: pug.renderFile(pattern)})