推荐答案
在 Express 中,可以使用 res.redirect()
方法来重定向请求。这个方法会将客户端重定向到指定的 URL,并且可以指定状态码(可选)。
app.get('/old-route', (req, res) => { res.redirect('/new-route'); }); app.get('/old-route-with-status', (req, res) => { res.redirect(301, '/new-route'); });
在上面的代码中,第一个路由会将请求从 /old-route
重定向到 /new-route
,默认使用 302 状态码(临时重定向)。第二个路由则明确指定了 301 状态码(永久重定向)。
本题详细解读
1. res.redirect()
方法
res.redirect()
是 Express 提供的一个方法,用于将客户端重定向到另一个 URL。它可以接受一个或两个参数:
- 第一个参数:可以是状态码(如 301、302 等),也可以是目标 URL。
- 第二个参数:如果第一个参数是状态码,那么第二个参数就是目标 URL。
2. 状态码
- 301 (Moved Permanently):表示请求的资源已永久移动到新的 URL。浏览器会缓存这个重定向,后续请求会直接跳转到新的 URL。
- 302 (Found):表示请求的资源临时移动到新的 URL。浏览器不会缓存这个重定向,后续请求仍然会访问原始 URL。
3. 使用场景
- 301 重定向:适用于永久性更改 URL 的场景,例如网站改版、域名更换等。
- 302 重定向:适用于临时性更改 URL 的场景,例如 A/B 测试、临时维护页面等。
4. 示例代码
-- -------------------- ---- ------- -- ----- ------------------------- ----- ---- -- - ------------------------------ --- -- ----- ------------------------- ----- ---- -- - ----------------- ----------------- ---
在这个示例中,/temp-redirect
会使用 302 状态码进行重定向,而 /perm-redirect
会使用 301 状态码进行重定向。