0

我刚刚开始尝试使用 node & express,并尝试使用 Ajax 将各种 HTML 文件的内容加载到单个网页中。

我希望地址栏中显示的 URL 反映我服务器上的实际文件结构;因此,例如,当用户单击带有 的链接时href="posts/thePost.html",我没有实际进入该页面,而是使用click()preventDefault()和 Ajax 将内容加载到 div 中,然后pushState()使window.onpopstate地址栏显示文件的相对路径。我不想使用哈希 ( #) 符号或查询 ( ?=) 或类似的东西,我想要普通的 URL。

这很好用,但是当我刷新页面时,显示位于 URL (ie posts/thePost.html) 的文件而不是index.html加载的内容。有没有办法使用节点来解决这个问题,也许是通过拦截请求并显示内容来index.html代替?我试图搜索这个,但没有任何运气。

抱歉,如果这听起来令人困惑。简而言之,我正在寻找的行为是,无论刷新页面时地址栏显示什么 URL,index.html都应该提供服务

4

2 回答 2

1

这很容易做到:

function serveIndex(req, res) {
    return res.sendfile('index.html');
}
app.get('*', serveIndex);
app.head('*', serveIndex);

您可能希望将其放在其他路线之后,以免最终破坏它们。

于 2013-04-20T23:11:02.350 回答
0
var routes = require('./routes/index'); 
app.use('/',routes); 
app.use('/index',routes);

function serveIndex(req, res) {
 res.redirect('/');
}
app.get('*', serveIndex);
于 2016-02-25T06:59:37.820 回答