使用node.js + express + jQuery将所有URL指向单个网页

时间:2013-04-20 21:44:00

标签: node.js express

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

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

这样可以正常工作,但是当我刷新页面时,会显示位于URL的文件(即?=),而不是带有加载内容的posts/thePost.html。有没有办法使用节点来解决这个问题,可能是通过拦截请求并显示index.html的内容?我试图搜索这个,但没有运气。

对不起,如果这听起来很混乱。简而言之,我正在寻找的行为是无论刷新网页时地址栏显示的是什么网址,都应该提供index.html

2 个答案:

答案 0 :(得分:1)

这很容易做到:

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

您可能希望将其放在其他路线之后,这样您就不会破坏它们。

答案 1 :(得分:0)

var routes = require('./routes/index'); 
app.use('/',routes); 
app.use('/index',routes);

function serveIndex(req, res) {
 res.redirect('/');
}
app.get('*', serveIndex);