English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

NodeJS базовый курс

NodeJS Express.js

NodeJS буфер&URL;

NodeJS MySql

NodeJS MongoDB

NodeJS файл(FS)

NodeJS другие

Перенаправление URL в Node.js

Node.js перенаправление URL:В этом курсе Node.js мы изучим перенаправление URL.

Перенаправление может применяться в следующих случаях:

  • Некоторые ресурсы перемещаются на новый адрес, и вы хотите перенаправить пользователя на новый адрес ресурса.

  • Некоторые страницы веб-приложения были удалены, и когда запрашивается эта страница, вы хотите перенаправить пользователя на главную страницу или некоторые пользовательские страницы.

Основные типы перенаправлений HTTP主要有 три.

Но помните, что коды перенаправления HTTP (например, 301, 302, 307 и т.д.) влияют на рейтинг страниц оригинального или перенаправленного URL, и каждый код перенаправления имеет свои особенности. Например, если ресурс был永久но перемещен, то использование кода HTTP 301 для перенаправления передаст juice на перенаправленный URL, в то время как 302 или 307 не будут.

Для следующего примера рассмотрим два веб-страницы: page-a.html и page-b.html, которые обслуживает ваше веб-приложение. У вас есть 404_найден.html, которая отображается при запросе на несуществующий ресурс.

Пример перенаправления URL в Node.js

В этом примере мы продемонстрируем ситуацию, когда URL запроса необходимо перенаправить. Когда мы получаем запрос на page-c.html, мы отправляем клиенту веб-приложения ответ о перенаправлении (для поиска page-b.html).

var http = require('http'); 
var fs = require('fs'); 
 
// 创建一个http服务器
http.createServer(function(req, res) { 
    
    if (req.url == '/page-c.html') { 
        // 在响应中使用301(永久移动)HTTP代码重定向到page-b.html
        res.writeHead(301, { "Location": "http://" + req.headers['host'] + '/page-b.html' }); 
        return res.end(); 
    } else { 
        // 对于其他URL,请尝试使用页面进行响应
        console.log(req.url) 
        // 读取请求的文件
        fs.readFile(req.url.substring(1), 
            function(err, data) {  
                if (err) throw err; 
                res.writeHead(200); 
                res.write(data.toString('utf8')); 
                return res.end(); 
        }); 
    }  
 }).listen(8085);

Terminal Output

$ node node-js-http-redirect.js

打开浏览器,显示开发者工具,然后单击URL“http://localhost:8085/page-c.html”。

在“开发者工具”的“网络”部分,您会发现请求已被重定向到新页面。

对于第一个请求,我们从Node.js应用程序发送了301响应代码。

Node.js重定向URL示例–找不到文件错误

在此示例中,我们将演示找不到请求的文件的情况。但是,您不想向您的Web客户端显示无趣的404错误页面。相反,您想显示其他页面,例如page-a.html。

 var http = require('http'); 
var fs = require('fs'); 
 
// 创建一个http服务器
http.createServer(function(req, res) { 
    var filePath = req.url.substring(1); 
    fs.readFile(filePath, 
        function(err, data) {  
            // 如果读取文件时出错,请将其重定向到page-b.html
            if (err) { 
                // 响应时使用302 HTTP代码重定向到page-b.html
                res.writeHead(302, { "Location": "http://" + req.headers['host'] + '/page-b.html' }); 
                return res.end(); 
            } 
            res.writeHead(200); 
            res.write(data.toString('utf8')); 
            return res.end(); 
    }); 
 }).listen(8085);

终端输出

 
 $ node node-js-http-redirect-file-not-found.js

打开浏览器,显示开发者工具,然后单击URL“http://localhost:8085/page-n.html”。

在“开发者工具”的“网络”部分中,您会发现请求已重定向到新页面,响应中带有302(临时移动)的HTTP代码。