微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我是node.js的初学者,我正在使用带有ejs布局的express,我想知道如何在放置页面时摆脱.html扩展名.例如,如果我去我的localhost:3000 / about.html – 这有效但我希望它显示为just / about.此外,如果有人知道如何从快速认值快速更改它,无法弄清楚如何更改图标.

任何帮助都会非常感谢.

最佳答案
(我意识到这个问题很老,但在Google搜索结果中显得很高,并且接受的答案不是最佳解决方案.)

在express.js中提供静态内容的最佳解决方案是express.static.为避免在URL中指定文件扩展名,您可以使用搜索静态文件时将使用的文件扩展名列表对其进行配置:

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

这将提供pathToBaseFolderOfStaticContent / somePage.html或pathToBaseFolderOfStaticContent / somePage.htm以响应对http://www.example.com/somePage的GET请求,这就是你想要的.例如,如果您访问https://arcade.ly/star-castle,则它提供的文件只是一个名为star-castle.html的静态文件.我没有为此添加任何特殊路由,或任何其他静态文件 – 它只是由express.static处理.

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

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

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

> http://expressjs.com/en/starter/static-files.html
> http://expressjs.com/en/4x/api.html(express.static文档位于顶部)

这也在In express what is the common way to associate a default file extension with static content requests?回答.

favicon.ico问题可以通过将您的favicon放入提供静态内容的根文件夹中来解决,并实现Costa的解决方案,您可以使用< link>来引用它.在< head>中你的文件.

从理论上讲,您不需要将favicon放在根文件夹中,但实际上,某些浏览器仍会从站点根目录中请求它,即使它在< head>中引用了它.你的文件.这会导致您在客户端调试工具(例如,Chrome开发工具)中看到的虚假404错误.

原文地址:https://www.jb51.cc/html/426448.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐