在node / express中,我有这个
var express = require('express');
var path = require('path');
// start express module
var app = express();
app.use(express.static(path.join(__dirname, 'public')));
/*
* Visit the home page
*/
app.get('/', function (req, res) {
res.sendFile(__dirname + '/index.html');
});
var server = app.listen(process.env.PORT || 3000, function () {
var host = server.address().address;
var port = server.address().port;
console.log('My site started at http://%s:%s', host, port);
});
因此,如果我使用主页链接,或者直接指向服务器上的某个文件,我只能访问我的页面。
然而,在客户端,我使用具有历史API的单页面应用程序设计,并且具有类似localhost:3000/work
的路径。因此,如果我要转到根页面,有一个按钮使用历史记录api将网址更改为/work
,最终会显示新内容。
但是,如果我手动访问localhost:3000/work
,node.js认为我需要找到一个名为localhost:3000/work/index.html
的文件,并说找不到页面。如何设置它以便页面请求仍然触发index.html
?
由于
答案 0 :(得分:2)
很抱歉不写评论(我还不能)。
您的客户端路线设置不熟悉(您可以共享吗?)。
这不是最佳做法,只是为了确保您的客户端设置正常 - 您能否检查一下这是否正常:
app.get('/', function (req, res) {
res.sendFile(__dirname + '/index.html');
});
app.get('*', function (req, res) {
res.redirect('/');
});