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

前端之家收集整理的这篇文章主要介绍了如何在使用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错误.

猜你在找的HTML相关文章