我已将nginx配置为将所有请求传递给Node:
server {
listen 80;
server_name domain.tld;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
在服务器上,我有一个运行Express的Node应用程序,它为我的Vue索引文件提供服务。
app.get('/', (req, res) => {
res.sendFile(`${__dirname}/app/index.html`);
});
我想在Vue路由器中使用HTML5历史记录模式,因此我在路由器设置中设置了mode: 'history'
。我安装了connect-history-api-fallback并进行了设置:
const history = require('connect-history-api-fallback');
app.use(history());
如果用户首次点击http://domain.tld
,则路由可以正常工作。但是,如果直接访问子路由,或刷新页面,我会收到一个未找到的错误。
如何更改配置?
答案 0 :(得分:2)
由于我无法使connect-history-api-fallback库正常工作,我自己创建了一个:
app.use((req, res, next) => {
if (!req.originalUrl.includes('/dist/', 0)) {
res.sendFile(`${__dirname}/app/index.html`);
} else {
next();
}
});
除了/app/index.html
脚本和图片所在的位置之外,这将发送/dist
。
答案 1 :(得分:1)
我遇到了同样的问题。
当订单是:
时,它不会工作app.use(express.static('web'));
app.use(history());
,但在以下情况下可以使用:
app.use(history());
app.use(express.static('web'));
整个示例应用:
var express = require('express');
var history = require('connect-history-api-fallback');
var app = express();
app.use(history());
app.use(express.static('web'));
app.listen(3002, function () {
console.log('Example app listening on port 3002!')
});
在网络文件夹中,我有:
index.html的
和其他js,css文件。