Node.js www - 非 www 重定向

作者:编程家 分类: 编程代码 时间:2025-11-13

Node.js是一个基于Chrome V8引擎的JavaScript运行时环境,它可以在服务器端运行JavaScript代码。在开发Web应用程序时,经常会遇到需要将用户输入的URL重定向到带有www前缀的URL或者去掉www前缀的URL的情况。本文将介绍如何使用Node.js实现非www重定向到www,或者将www重定向到非www的功能。

使用Node.js实现非www重定向到www

首先,我们需要创建一个Node.js服务器,并监听指定的端口。我们可以使用Node.js内置的http模块来实现这一功能。下面是一个简单的示例代码:

javascript

const http = require('http');

const hostname = '0.0.0.0';

const port = 3000;

const server = http.createServer((req, res) => {

const host = req.headers.host;

const redirectUrl = `http://www.${host}${req.url}`;

res.statusCode = 301;

res.setHeader('Location', redirectUrl);

res.end();

});

server.listen(port, hostname, () => {

console.log(`Server running at http://${hostname}:${port}/`);

});

在上述代码中,我们通过监听指定的端口创建了一个HTTP服务器。当接收到请求时,我们获取请求头中的host字段,然后构造一个带有www前缀的URL。然后,我们将状态码设置为301,表示永久重定向,并在响应头中设置Location字段,将重定向的目标URL设置为我们构造的URL。最后,我们通过调用res.end()方法来结束响应。

使用Node.js实现www重定向到非www

与非www重定向到www类似,我们可以通过修改构造重定向URL的方式来实现将www重定向到非www的功能。下面是一个示例代码:

javascript

const http = require('http');

const hostname = '0.0.0.0';

const port = 3000;

const server = http.createServer((req, res) => {

const host = req.headers.host;

const redirectUrl = `http://${host.replace('www.', '')}${req.url}`;

res.statusCode = 301;

res.setHeader('Location', redirectUrl);

res.end();

});

server.listen(port, hostname, () => {

console.log(`Server running at http://${hostname}:${port}/`);

});

在上述代码中,我们使用replace()方法将host字段中的www替换为空字符串,从而得到去掉www前缀的URL。

本文介绍了如何使用Node.js实现非www重定向到www,或者将www重定向到非www的功能。通过构造重定向URL并设置Location字段,我们可以轻松地实现这一功能。同时,我们还提供了两个示例代码,分别展示了非www重定向到www和将www重定向到非www的实现方式。在实际开发中,我们可以根据具体需求选择合适的重定向方式,并进行相应的配置。