English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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 запроса необходимо перенаправить. Когда мы получаем запрос на 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响应代码。
在此示例中,我们将演示找不到请求的文件的情况。但是,您不想向您的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代码。