如何在Node.js中进行重定向

26

我在重定向各个目录之间遇到了一些问题,问题在于我无法管理在不同目录中重定向到另一个文件。我的目录结构如下:

-views
  -add_user.jade

-routes
  -index.js

我试图从index.js重定向到add_user.jade,你们会如何做呢?

res.redirect('???');
如果index.jsviews在同一个目录中,下面的代码可以正常工作。
-index.js
-views
  -add_user.jade

res.redirect('./add_users');
5个回答

60
您想要重定向到您想要用户访问的URL(而不是视图名称)。
例如,如果路由“/user/add”呈现“add_user.jade”视图,则需要使用:
 res.redirect("/user/add");

这个解决方案仍适用于当前的Express。请参阅此实时Docker示例 链接 - user7503126
@user7503126的Docker实例不再在线。 - FranciscoBouza

1

是的,你可以通过以下方式在URL上进行重定向:

return res.redirect('/server/Thank'); 

这是一个扩展名为Thank.jade的视图文件。

路由为/server/thank


0
在Node.js中,使用res.setHeader('Location', 'url');来设置重定向URL。

你的回答可以通过添加更多关于代码的信息以及它如何帮助提问者来改进。 - Tyler2P

-1
首先,如果尚未安装,请先安装HTTP。
yarn add http

然后导入/引用它:
var http = require("http");

http.createServer(function(request, response){
    response.writeHead(302,  {Location: "http://www.oddcircles.com"})
    response.end();
}).listen(3030);

-46

试试这个:

document.location.href="full_URL";

8
OP 询问关于服务器端 JavaScript,而你的答案只适用于浏览器。 - Yi Jiang
2
如果你的建议是“返回一个包含一些JavaScript重定向的HTML文档的200响应”,那么这可能是更不可靠、低效的方法……而且它还会破坏后退按钮。 - Quentin
@ChrisHawkes 看起来每个点赞最佳答案的人也关心这个答案。 - vrintle
2
文档对象是一个全局对象,只能在浏览器中使用。在 Node 中,您需要使用 res.redirect。 - matoneski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接