Node.js 服务器向 404.html 页面发送“404 未找到”消息

2023-11-26

我正在使用 node.js,我想知道如何显示 404.html 而不是“404 Not Found”消息。

这是我的 server.js:

var http = require("http"),
url = require("url"),
path = require("path"),
fs = require("fs")
port = process.argv[2] || 8888;

http.createServer(function(request, response) {

var uri = url.parse(request.url).pathname
, filename = path.join(process.cwd(), uri);

path.exists(filename, function(exists) {
if(!exists) {
  response.writeHead(404, {"Content-Type": "text/plain"});
  response.write("404 Not Found\n");
  response.end();
  return;
}

if (fs.statSync(filename).isDirectory()) filename += 'public/Index/index.html';

fs.readFile(filename, "binary", function(err, file) {
  if(err) {        
    response.writeHead(500, {"Content-Type": "text/plain"});
    response.write(err + "\n");
    response.end();
    return;
  }

  response.writeHead(200);
  response.write(file, "binary");
  response.end();
  });
 });
}).listen(parseInt(port, 10));

console.log("Static file server running at\n  => http://localhost:" + port + "/\nCTRL + C to shutdown");

正如你所看到的,它只是一个静态文件服务器,我没有使用express.js或任何东西。


H i ,

在您的 404 案件中

  response.writeHead(404, {"Content-Type": "text/plain"});
  response.write("404 Not Found\n");
  response.end();

您可以更改为

  response.writeHead(404, {"Content-Type": "text/html"});
  response.write(HTMLDATA);
  response.end();

'HTML数据'可以是 HTML 字符串,也可以是对您收集的文件的引用。

response.writeHead()始终设置在response.write().

另请参阅我们已将响应类型设置为“text/html”


http://nodejs.org/api/http.html#http_class_http_serverresponse

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Node.js 服务器向 404.html 页面发送“404 未找到”消息 的相关文章

随机推荐

  • omu.valueinjecter 深度克隆与类型不同

    我认为我缺少一个关于 valueinjecter 和 或 AutoMapper 的简单概念 但是如何将父级 dto Entity 深度克隆到 biz Entity 并包含所有子级 例如 biz person InjectFrom dto p
  • 如何创建 NodeJS 模块?

    我已阅读 NodeJS 网站上的详细信息 https nodejs org api modules html 我不明白模块是如何工作的 创建模块的最少步骤是什么 以及 npm 如何帮助我 如何创建模块 我如何使用模块 把它放在 npm 上是
  • 如何在 UIDatePicker 中仅禁用日期选择而不是时间选择

    我在我的应用程序中使用 UIDatePicker 我想仅禁用其中的日期选择 并且时间选择不应受到影响 谁能帮我这个 Set the datePickerMode to UIDatePickerModeTime
  • 使用与密钥相同的字符串加密字符串是否安全?

    在 CBC 模式下使用 AES 并使用 IV 当然 对给定密钥本身进行加密是否存在任何安全缺点 遵循以下原则 密钥是秘密的 IV 是公开的 因为这不会影响加密的安全性 然而 潜在的攻击者将会知道 因为他可以访问源代码 该字符串使用其自身作为
  • 具有相机意图和图像选择器意图的选择器

    我创建了一个选择器 用于从文件中选择图像或制作图片 我使用的代码在 Nexus 5 上运行良好 但是当我在 Samsung S5 上尝试时 选择器不显示相机图标 public Intent makePhotoIntent String ti
  • docker 互联网连接 iptables=false

    我放弃 我在 ubuntu 16 04 下使用 Docker 1 12 0 并使用 UFW 进行强化 该机器有 2 个接口 一个公共 eth0 和一个专用网络 eth1 Server Version 1 12 3 Storage Drive
  • 如何仅使用 CSS 获得悬停效果

    我已经得到了圆圈部分 我在 div 上设置了黑色的背景颜色 对于文本 我设置了 a hover 作为显示的颜色 我只是不知道如何为 div 设置 a hover 以及仅针对该周长 这是我的代码 HTML a class cirlink hr
  • 静态成员的两个实例,怎么可能?

    我有一个多线程应用程序 我在共享库中声明一个具有静态成员的类 从不同库的不同线程打印成员的地址会显示不同的结果 宣言 template
  • 指令在 ng-repeat 绑定的 内不起作用

    我有一个表 其中的行通过重复ng repeat 我正在尝试创建一个生成列的模板 td 对于每一行 tr app directive customtd function return restrict E template td positi
  • 来自 AngularJS Get for JSON 的 HTTP 状态 0

    我正在为 JSON 运行 http get 并且状态为 0 我已经下载了相同的 JSON 并且 get 在本地工作 并且在 Python 中使用请求库我可以毫无问题地获取 JSON 但是在AngularJS 不起作用 我不明白的是为什么 A
  • 在 macOS 的 SwiftUI 中更改 TextEditor 背景颜色

    我想更改 macOS 上 SwiftUI 文本编辑器的背景颜色 下面的代码 用于 iOS 是否有一个变体适用于 NSTextField 而不是 UITextView Thanks struct ContentView View init U
  • 社交网络应用程序数据库设计:如何改进此架构?

    背景 我正在为诗人和作家开发一款社交网络应用程序 让他们能够分享诗歌 收集反馈并与其他诗人交流 我很少接受过数据库设计方面的正式培训 但我一直在阅读书籍 SO 和在线数据库设计资源 试图在不过度设计的情况下确保性能和可扩展性 数据库是MyS
  • 复杂数据类型的 Typedef

    我试图从语法的角度理解 C 如何处理复杂 typedef 的底层机制 请考虑下面的示例 问题末尾包含参考文献 typedef int p1d 10 是正确的声明 即 p1d 这里是指向数组的指针 10 个整数 就像使用 Array 类型声明
  • Angular 2 下载文件:结果损坏

    我正在尝试使用 Angular 2 TypeScript 和 Web API 下载文件 我遇到的问题是 当下载文本文件时 该文件是文件 但是当尝试下载 PDF 文件时 例如 它已损坏 下载的文件内容都是乱码废话 我使用的 TypeScrip
  • 如何在 Python 中存储变量/首选项以供以后使用

    我正在用 Python 编写 Windows 程序 并且希望保存变量和用户首选项 以便即使在程序终止并重新启动后我也可以调用它们 有没有在 Windows 机器上执行此操作的理想方法 会 winregWindows 注册表适合这项任务吗 或
  • C++ 运算符重载的多态性

    如何使纯虚函数成为运算符 功能 我在基课上喜欢这个吗 int运算符 0 编译器给出错误 在派生类中operator 函数 编译器说派生类不能 make 因为下面的类是抽象的 我知道我无法创建抽象类的对象 但现在我尝试创建派生类对象 这是代码
  • Django 和 Postgres - 百分位数(中位数)和分组依据

    我需要计算每个卖家 ID 的期间中位数 参见下面的简化模型 问题是我无法构建 ORM 查询 Model class MyModel period models IntegerField null True default None sell
  • Django 设计登录表单并添加额外的跨度

    我有两个关于表单样式的问题 对于我的登录 我使用 Django 的默认身份验证功能 并且没有手动编写任何视图或表单 urls py urlpatterns patterns django contrib auth views url r l
  • 在 Centos 6 上安装最新的 mono

    我是 Linux 新手 字面意义上的新手 用过几次 我尝试通过 yum 安装 mono 但我得到了一个不支持 NET 4 的过时版本 如何安装单声道 2 10 8 好吧 这就是我想出的并且它对我有用 基于this文章 yum install
  • Node.js 服务器向 404.html 页面发送“404 未找到”消息

    我正在使用 node js 我想知道如何显示 404 html 而不是 404 Not Found 消息 这是我的 server js var http require http url require url path require p