Nodejs – redirecturl
如何获取node.js服务器在用户input无效url时将用户redirect到404.html页面?
我做了一些search,它看起来像大多数结果是快速,但我想写我的服务器在纯node.js。
确定“错误”url的逻辑是特定于您的应用程序的。 这可能是一个简单的文件没有find错误或别的东西,如果你正在做一个RESTful应用程序。 一旦你明白了这一点,发送redirect就像下面这样简单:
response.writeHead(302, { 'Location': 'your/404/path.html' //add other headers here... }); response.end();
有可能使用:
res.redirect('your/404/path.html');
要表示缺less的文件/资源并提供404页面,则不需要redirect。 在相同的请求中,您必须生成状态码设置为404的响应以及404 HTML页面的内容作为响应主体。 这里是在Node.js中演示这个示例代码。
var http = require('http'), fs = require('fs'), util = require('util'), url = require('url'); var server = http.createServer(function(req, res) { if(url.parse(req.url).pathname == '/') { res.writeHead(200, {'content-type': 'text/html'}); var rs = fs.createReadStream('index.html'); util.pump(rs, res); } else { res.writeHead(404, {'content-type': 'text/html'}); var rs = fs.createReadStream('404.html'); util.pump(rs, res); } }); server.listen(8080);
404与内容/正文
res.writeHead(404, {'Content-Type': 'text/plain'}); // <- redirect res.write("Looked everywhere, but couldn't find that page at all!\n"); // <- content! res.end(); // that's all!
redirect到http
res.writeHead(302, {'Location': 'https://example.com' + req.url}); res.end();
只要考虑你在哪里使用(例如只用于http请求),所以你不会得到无尽的redirect;-)
我用了一个switch语句,默认为404:
var fs = require("fs"); var http = require("http"); function send404Response (response){ response.writeHead(404, {"Content-Type": "text/html"}); fs.createReadStream("./path/to/404.html").pipe(response); } function onRequest (request, response){ switch (request.url){ case "/page1": //statements break; case "/page2": //statements break; default: //if no 'match' is found send404Response(response); break; } } http.createServer(onRequest).listen(8080);
尝试这个:
this.statusCode = 302; this.setHeader('Location', '/url/to/redirect'); this.end();