如何让node.js服务器在输入无效网址时将用户重定向到404.html页面?
我做了一些搜索,看起来大多数结果都是针对Express,但我想在纯node.js中编写我的服务器.
在我正在尝试编写的应用程序中,主页面(http:// localhost:8675)具有以下形式:
<form action='/?joinnew' method='post'>
<button>Start</button>
</form>
Run Code Online (Sandbox Code Playgroud)
这是server.js中的代码:
http.createServer(function(request, response) {
var root = url.parse(request.url).pathname.split('/')[1];
if (root == '') {
var query = url.parse(request.url).search:
if (query == '?joinnew') {
var newRoom = getAvaliableRoomId(); // '8dn1u', 'idjh1', '8jm84', etc.
// redirect the user's web browser to a new url
// ??? How to do. Need to redirect to 'http://whateverhostthiswillbe:8675/'+newRoom
...
}}}
Run Code Online (Sandbox Code Playgroud)
如果有办法在我不需要知道主机地址的情况下,我会很高兴,因为这可能会改变.
'http'对象是常规需求('http'),不需要('express').
当我向我的服务器发送 xhr post 请求时。它回复 302 重定向,但我只能记录整个重定向 html,无法让浏览器重定向到新的 url。
服务器.js
const Hapi = require('hapi');
const Inert = require('inert');
const server = new Hapi.Server();
const port = 8888;
server.connection({ port });
server.register([ Inert ], () => {
server.route([
{
method: 'get',
path: '/',
handler: (request, reply) => {
reply.file('index.html');
}
},
{
method: 'get',
path: '/login',
handler: (request, reply) => {
reply.file('login.html');
}
},
{
method: 'post',
path: '/login',
handler: (request, reply) => {
reply.redirect('/');
}
}
]);
server.start(() => {
console.log('Server …
Run Code Online (Sandbox Code Playgroud)