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');
});