Node.js + Express – ルーターモジュール内でリダイレクトする

Node.js + Express 環境で ルーターモジュール内でリダイレクトするときは res.baseUrl を使います。

目的

http://example.com/users/ から http://example.com/users/hoge にリダイレクトする

方法

まず、次のような /users パスにマウントした users ルーターモジュールがあるとします。

const userRoutes = require('./users');
app.use('/users', userRoutes);

@users.js (/usersパスにマウント)

/users にアクセスがあったときに、/users/hoge にリダイレクトするには、req.baseUrl + パス とするとマウントされたパス内でリダイレクトできます。

router.get('/', (req, res) => {
 res.redirect(req.baseUrl + '/hoge');
});

req.baseUrlを使わず、普通にリダイレクトすると、アプリケーションルートからのパスでリダイレクトされます。 下記の場合、/users にアクセスがあると /users/hoge ではなく、/hoge にリダイレクトします。

@users.js (/usersパスにマウント)

router.get('/', (req, res) => {
 res.redirect('/hoge');
});