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。

重定向可以应用于以下情况:

  • 一些资源会永久移动到新位置,并且您想将用户重定向到移动资源的新位置。

  • Web应用程序中的某些页面已删除,并且当请求该页面时,您希望将用户重定向到主页或某些自定义页面。

HTTP重定向主要有三种类型。

但是请记住,HTTP重定向代码(比如301、302、307等)会影响原始或重定向url的页面排名,并且每个重定向代码的影响都不同。例如,如果您永久地移动了资源,那么在响应中使用301 HTTP代码将果汁传递到重定向的URL,而302或307则不会。

对于下面的示例,考虑有两个页面:page-a.html和page-b.html,您的web应用程序为它们提供服务。我们有一个404_找到.html当请求的资源不存在时显示。

Node.js Redirect URL 示例

在这个实例中,我们将演示请求的url必须被重定向的场景。当我们收到对page-c.html的请求时,我们将向web客户端发送重定向响应(以查找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".

في جزء "أدوات المطورين" -> "الشبكة"، ستجد أن الطلب قد تم توجيهه إلى صفحة جديدة.

للطلب الأول، قمنا بإرسال رمز الرد 301 من تطبيق Node.js.

مثال على تحويل URL Node.js – خطأ عدم وجود ملف

في هذا المثال، سنقوم بعرض حالة عدم وجود ملف مطلوب. ولكن، لا تريد أن تظهر صفحة خطأ 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) { 
                // تستخدم رمز HTTP 302 للتحويل عند الرد
                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".

في جزء "أدوات المطورين" -> "الشبكة"، ستجد أن الطلب قد تم توجيهه إلى صفحة جديدة، يحتوي الرد على رمز HTTP 302 (تحويل مؤقت).