NodeJS 基礎(chǔ)教程

NodeJS Express.js

NodeJS 緩沖&URL

NodeJS MySql

NodeJS MongoDB

NodeJS 文件(FS)

NodeJS 其他

Node.js 重定向URL

Node.js重定向URL:在本Node.js教程中,我們將學(xué)習(xí)重定向URL。

重定向可以應(yīng)用于以下情況:

  • 一些資源會(huì)永久移動(dòng)到新位置,并且您想將用戶重定向到移動(dòng)資源的新位置。

  • Web應(yīng)用程序中的某些頁(yè)面已刪除,并且當(dāng)請(qǐng)求該頁(yè)面時(shí),您希望將用戶重定向到主頁(yè)或某些自定義頁(yè)面。

HTTP重定向主要有三種類型。

但是請(qǐng)記住,HTTP重定向代碼(比如301、302、307等)會(huì)影響原始或重定向url的頁(yè)面排名,并且每個(gè)重定向代碼的影響都不同。例如,如果您永久地移動(dòng)了資源,那么在響應(yīng)中使用301 HTTP代碼將果汁傳遞到重定向的URL,而302或307則不會(huì)。

對(duì)于下面的示例,考慮有兩個(gè)頁(yè)面:page-a.html和page-b.html,您的web應(yīng)用程序?yàn)樗鼈兲峁┓?wù)。我們有一個(gè)404_找到.html當(dāng)請(qǐng)求的資源不存在時(shí)顯示。

Node.js Redirect URL 示例

在這個(gè)實(shí)例中,我們將演示請(qǐng)求的url必須被重定向的場(chǎng)景。當(dāng)我們收到對(duì)page-c.html的請(qǐng)求時(shí),我們將向web客戶端發(fā)送重定向響應(yīng)(以查找page-b.html)。

var http = require('http'); 
var fs = require('fs'); 
 
// 創(chuàng)建一個(gè)http服務(wù)器
http.createServer(function (req, res) { 
    
    if (req.url == '/page-c.html') { 
        // 在響應(yīng)中使用301(永久移動(dòng))HTTP代碼重定向到page-b.html
        res.writeHead(301, { "Location": "http://" + req.headers['host'] + '/page-b.html' }); 
        return res.end(); 
    } else { 
        // 對(duì)于其他URL,請(qǐng)嘗試使用頁(yè)面進(jìn)行響應(yīng)
        console.log(req.url) 
        // 讀取請(qǐng)求的文件
        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

打開瀏覽器,顯示開發(fā)人員工具,然后單擊URL“ http:// localhost:8085/page-c.html”。

在“開發(fā)人員工具”的“網(wǎng)絡(luò)”部分,您會(huì)發(fā)現(xiàn)請(qǐng)求已被重定向到新頁(yè)面。

圖片.png

對(duì)于第一個(gè)請(qǐng)求,我們從Node.js應(yīng)用程序發(fā)送了301響應(yīng)代碼。

Node.js重定向URL示例–找不到文件錯(cuò)誤

在此示例中,我們將演示找不到請(qǐng)求的文件的情況。但是,您不想向您的Web客戶端顯示無(wú)趣的404錯(cuò)誤頁(yè)面。相反,您想顯示其他頁(yè)面,例如page-a.html。

 var http = require('http'); 
var fs = require('fs'); 
 
// 創(chuàng)建一個(gè)http服務(wù)器
http.createServer(function (req, res) { 
    var filePath = req.url.substring(1); 
    fs.readFile(filePath, 
        function(err, data) {  
            // 如果讀取文件時(shí)出錯(cuò),請(qǐng)將其重定向到page-b.html
            if (err){ 
                // 響應(yīng)時(shí)使用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

打開瀏覽器,顯示開發(fā)人員工具,然后單擊URL“ http:// localhost:8085 / page-n.html”。

在“開發(fā)人員工具”的“網(wǎng)絡(luò)”部分中,您會(huì)發(fā)現(xiàn)請(qǐng)求已重定向到新頁(yè)面,響應(yīng)中帶有302(臨時(shí)移動(dòng))的HTTP代碼。

圖片.png

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清