使用 Node.js 提供网页时如何摆脱 .html 扩展名?

2024-01-02

我是 Node.js 的初学者,正在使用 Express 和 ejs 布局,我想知道如何在发布页面时摆脱 .html 扩展名。例如,如果我转到我的 localhost:3000/about.html - 这可以工作,但我希望它显示为 /about。此外,如果有人知道如何快速更改默认图标,则很难弄清楚如何更改图标。

任何帮助将非常感谢。


(我意识到这个问题很老了,但它在谷歌搜索结果中出现得很高,并且接受的答案并不是最好的解决方案。)

提供静态内容的最佳解决方案快递.js is 表达静态。为了避免在 URL 中指定文件扩展名,您可以使用搜索静态文件时将使用的默认文件扩展名列表来配置它:

app.use(express.static(pathToBaseFolderOfStaticContent, {
    extensions: ['html', 'htm'],
    ... // Other options here
}));

这将服务pathToBaseFolderOfStaticContent/somePage.html or pathToBaseFolderOfStaticContent/somePage.htm响应 GET 请求http://www.example.com/somePage http://www.example.com/somePage,这就是你想要的。例如,如果您访问https://arcade.ly/star-castle https://arcade.ly/star-castle,它提供的文件只是一个名为星堡.html。我不必为此添加任何特殊路由或任何其他静态文件 - 这一切都由表达静态.

我只需要为需要服务器上的活动工作才能返回的内容添加特定路由。这里的一大优势是,我可以使用 CDN 来缓存更多内容(如果我运行内部业务应用程序,则使用 nginx),从而减少服务器上的负载。

显然,您可以根据需要配置任意数量的默认文件扩展名,尽管我倾向于保持列表简短。我仅将其用于 URL 可能出现在地址栏中的资源,这通常意味着 HTML 文件,但并非总是如此。

查看以下有关使用express.js 提供静态内容的文档:

  • http://expressjs.com/en/starter/static-files.html http://expressjs.com/en/starter/static-files.html
  • http://expressjs.com/en/4x/api.html http://expressjs.com/en/4x/api.html (the 表达静态文档位于顶部)

这也在在 Express 中,将默认文件扩展名与静态内容请求关联起来的常见方法是什么? https://stackoverflow.com/questions/12987590/in-express-what-is-the-common-way-to-associate-a-default-file-extension-with-sta.

The 图标.ico可以通过将您的网站图标放入提供静态内容的根文件夹中,以及实现 +Costa 的解决方案来解决这个问题,您可以使用<link> in the <head>您的文件。

理论上,您不需要将网站图标放在根文件夹中,但实际上,某些浏览器仍然会从网站根目录中请求它,即使它在<head>您的文档。这会导致虚假的 404 错误,您可以在客户端调试工具(例如 Chrome 开发工具)中看到该错误。

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

使用 Node.js 提供网页时如何摆脱 .html 扩展名? 的相关文章

  • Flexbox 列的垂直间距相等

    我在CSS中努力让我的Flexbox在垂直等距的列中显示项目 从而使列的每行之间的空间均匀 html body flex container margin 0 height 100 width 100 body font family Dr
  • 如何隐藏按钮元素的值?

    如何隐藏按钮的值 同时仍然显示按钮 我使用的颜色 透明 但这行不通 我想隐藏按钮的值 但不是所有按钮的值 我需要将 value 属性保留在按钮中 我只是不想让它被看见 如果您只想显示按钮而不显示任何文本 请将值设置为空字符串 然后手动设置按
  • 将一个 div 垂直居中对齐到另一个 div 中

    说我有 div class outer div class inner some stuff div div 内部 div 具有动态高度 它根据 div 内部的内容而变化 外部 div 只是一个容器 设置为具有窗口的高度 我想将其设置为使内
  • 带有图像垂直对齐的内联框:与父框居中

    请运行演示 margin 0 padding 0 body font family Microsoft Yahei font size 16px background color lightblue height 200px width 2
  • AWS Lambda 上的 NodeJS 集群

    是否可以在 lambda 函数中使用 cluster 模块 我试过这个 use strict var cluster require cluster var http require http var os require os var n
  • 如何让浮动的div对齐到顶部?

    下面的代码可以在这个小提琴中查看 http jsfiddle net VgG55 10 http jsfiddle net VgG55 10 我有以下标记 其中 div 按以下顺序放置 div class wrapper div class
  • 导入 node.js 模块 - SyntaxError:意外的标识符

    我正在尝试执行以下导入 import ResClient from resclient Result home arran WebstormProjects untitled1 app js 2 import ResClient from
  • Node.js 中的 webRTC

    我想在node js 中使用webRTC 来管理涉及浏览器和nodejs 上的对等点的混合连接 我做了一些测试和搜索 我尝试使用wrtc https github com js platform node webrtc or webrtc
  • MongoDB 中两个集合之间的 Diff()

    我做过研究 如果这是一个重复的问题 我很抱歉 但其他问题的解决方案并不适合我 因此 我提出了一个新问题 使用 Javascript 比较两个集合的最佳方法是什么 我有数千个这样的 Mongo 文档格式的标头 url google com h
  • 如何使用 php 处理传出 webhook (Slack)

    我已经配置了 Slack outgoing webhook 但我不确定如何处理 Slack 发送到我指定的 URL 的 HTTP POST 请求 工作流程是这样的 当有人向指定通道发送消息时 API 将向指定 URL 之一发送 HTTP P
  • 茉莉花节点没有输出

    我是 JavaScript Node js 和 jasmine 的新手 我正在尝试运行 Node Craftsman Book 一书中的测试 FilesizeWatcher 我创建了 package json 文件并运行 npm insta
  • 如何向 node-http-proxy 响应添加标头

    我需要在第三方服务上解决CORS 所以我想构建一个代理来添加标头 Access Control Allow Origin 为什么这段代码没有添加标题 httpProxy require http proxy var URL https th
  • 在原生 Android 应用程序中使用 WebView 整个布局有用吗?

    我目前正在开发一个原生 Android 应用程序 我的应用程序有很多活动 我要发展native安卓应用程序 但在某些情况下 我想使用webview整个布局只是一个网络视图 不是线性的或相对的或其他布局 只是一个网络视图 所有图像和其他内容都
  • 为什么我的 onclick 事件自动触发

    加载页面时最初显示 Hello World 我希望它仅在单击按钮后显示 我知道我可以通过向按钮添加内联事件侦听器来做到这一点 我可以只用脚本编写所有这些代码吗
  • 具有固定高度、自动宽度并保持比例的图像

    我有一个反应灵敏的ul列表 其中每个li是 50 ul宽度 每一个li 我有一个图像 我想要固定的高度和 100 的宽度 保持图像的比例 例如通过缩放 请问我该怎么做 ul width 100 li width 50 float left
  • 如何执行密集的 Node.js 计算

    我正在开发一个电子商务应用程序 每次产品从服务器发送到客户端时都必须重新计算产品的定价 每次发送多达数千个产品 计算部分本身相当密集 因为它需要多个数据库查询来计算 我的简单解决方案是将计算部分抽象到另一个专门用于计算的 Node js 应
  • 有不同图像尺寸的缩略图 Bootstrap

    我想要包含不同大小和不同文本量的图像的缩略图 但我希望它们都具有相同的大小 像这样来自 Bootstrap 站点的示例 http getbootstrap com components thumbnails custom content 下
  • 响应式菜单:悬停子菜单显示错误

    简而言之 我根据教程创建了一个响应式菜单 当您将鼠标悬停在投资组合按钮上时 菜单应该显示子菜单 而在移动模式下 您需要按该按钮才能显示子菜单 效果很好 问题是该教程有一个错误 如果您在桌面模式下按组合按钮 子菜单将不会再次显示 除非您按 单
  • 如何仅在第一次访问时弹出模态窗口

    我有一个模式窗口 当您访问某个页面时会弹出 访客必须选择我同意或我不同意 我需要一个漂亮的小 jquery 脚本 它会记住谁之前访问过该页面并同意 这样他们每次访问该页面时就不会弹出模式 有人可以推荐一个好的脚本来使用吗 这是代码 div
  • html 表格顶部对齐?

    我怎样才能让图像和内容向右顶部对齐 如你所见 我尝试了 valign top table border 0 cellspacing 0 cellpadding 0 tbody tr valign top td valign top img

随机推荐

  • 以编程方式生成请求验证令牌

    从一个空的 MVC 项目开始 这是我的Startup cs using Microsoft AspNetCore Builder using Microsoft AspNetCore Hosting using Microsoft Exte
  • Couchbase 文档日期搜索 - DateTime.Now()

    我在 CB 中有一份文档 其中有两个日期 开始日期和结束日期 比方说 产品的价格折扣 10 折扣从今天开始到下周五结束 我怎样才能从CB获得今天有有效折扣的所有文件 我做了一个视图 其中包含以下内容 var dt new Date 得到今天
  • Richardson-Lucy 反卷积可以恢复潜在内核吗?

    我知道理查森 露西反卷积是为了恢复潜在图像 但假设我们有一个噪声图像和原始图像 我们能找到引起转变的内核吗 下面是一个 MATLAB 代码理查森 露西反卷积 http en wikipedia org wiki Richardson E2
  • OS X Server + GIT 与 SSH 集成失败并出现权限被拒绝错误

    我的 GIT 服务器托管在单独的 Linux 服务器上 我有 SSH RSA 密钥没有密码 我能够使用 Xcode 连接到 GIT 服务器 并且所有操作都可以通过 Xcode 5 0 2 在源代码管理中正常工作 我在本地计算机上安装了 OS
  • 为什么 String.length() 是一个方法?

    如果 String 对象是不可变的 因此显然不能改变它的长度 为什么length 一种方法 而不是简单地public final int length比如数组中有什么 它只是一个 getter 方法 还是进行某种计算 只是想看看这背后的逻辑
  • Apple 如何查找电子邮件中的日期、时间和地址?

    在 iOS 电子邮件客户端中 当电子邮件包含日期 时间或位置时 文本将成为超链接 只需点击链接即可创建约会或查看地图 它不仅适用于英语电子邮件 也适用于其他语言 我喜欢这个功能 并且想了解他们是如何做到的 最简单的方法是使用许多正则表达式并
  • EF6 急切加载相关实体的单个属性

    在 EF6 中 我有一个实体客户 具有实体地址的导航属性 地址实体包含属性 城市 我可以急切地加载地址实体 同时获取所有客户 如下所示 dbSet Customers Include customer gt customer Address
  • 从 HttpWebRequest 下载时缺少某些元素?

    我正在使用 httpwebrequest 从给定的 url 下载数据 但很少有元素没有响应 Dim Request As HttpWebRequest CType WebRequest Create https www royalmail
  • 如何使InnoDB表在服务器重启时不重置自动增量?

    我的开发机器上运行的是 MySQL 5 5 37 我使用 innodb 表 面临下一个问题 服务器重新启动后自动增量重置 Found 自动锁模式 http dev mysql com doc refman 5 1 en innodb par
  • Twitter Open Graph 图像未显示

    我正在尝试在网站中实现 OpenGraph 这是我的元数据代码
  • Laravel 方法分页不存在

    我正在尝试对模型结果进行分页 但收到 分页方法不存在 这是我的代码 user dispatches Dispatch all gt where user id Auth id gt paginate 10 我需要获取用户 ID 等于当前经过
  • 我可以在 Three.js 中隐藏网格的面吗?

    我想使网格的某些部分在运行时不可见 我可以将这些部分设置为不可见 透明吗 通过改变单个面孔的属性 网格本身仅使用一种材料 示例说明 as the editor理解这个问题 想象一个网格 这里有 20 个顶点的几何图形 其中每个四个顶点的四边
  • DSPack - 如何获取声音输出的默认设备?

    在 Windows 7 中 有多个播放设备 示例 在我的笔记本电脑上 扬声器和双耳机 独立双耳机 SPDIF 通过 HP Dock 进行数字输出 情况是这样的 我正在编写一个应用程序 让用户选择输出设备并将其保存到应用程序的设置中 因此 它
  • Java 相当于 Cocoa 委托/Objective-C 非正式协议?

    Java 中 Cocoa 委托的等价物是什么 我知道我可以将一个接口传递给一个类 并让该类调用适当的方法 但我想知道是否有其他方法可以实现更接近 Cocoa Objective C 的非正式协议的东西 简而言之 Java 中没有任何东西能像
  • 如何在 Visual Studio 2013 中创建数据库项目

    我正在将包含一些 C 项目的解决方案从 Visual Studio 2008 迁移到 VS2013 迁移进行得很顺利 进行了一些调整 但是还有一个 dbp 项目 数据库项目 来自 VS2008 它拒绝在 VS2013 中迁移 加载 我在这个
  • 为什么通过 newCachedThreadPool 创建的 ExecutorService 是邪恶的?

    保罗 泰玛推介会 http paultyma blogspot com 2008 03 writing java multithreaded servers html有这一行 Executors newCachedThreadPool万恶
  • 在 OpenCV 中查找轮廓的“fitLine”

    我是一个在流中查找轮廓的程序 例如 我想找到可以描述这个轮廓的 点集 就像红线一样 黄色部分是轮廓的矩 我尝试使用fitLineopencv 的函数 但结果是无意义的 任何想法如何获得轮廓的中线 这应该代表我的 Contours 的关键方面
  • 有没有一种方法可以为 sendfile 编写不直接使用系统调用指令的 shellcode?

    我正在处理一个类似 ctf 的挑战 它正在过滤我的 shellcode 以确保我没有分别具有 syscall sysenter 和 int 指令 0x0f05 0x0f34 和 0x80cd 的十六进制值编码 基本上我有一个可以打开文件的
  • 哈希码的理解

    哈希函数对于实现哈希表很重要 我知道在java中 对象有其哈希码 该哈希码可能是由弱哈希函数生成的 以下是 补充哈希函数 的一个片段 static int hash Object x int h x hashCode h h lt lt 9
  • 使用 Node.js 提供网页时如何摆脱 .html 扩展名?

    我是 Node js 的初学者 正在使用 Express 和 ejs 布局 我想知道如何在发布页面时摆脱 html 扩展名 例如 如果我转到我的 localhost 3000 about html 这可以工作 但我希望它显示为 about