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