Node.js Express通配符(catch-all)不能在App root上运行

时间:2014-03-31 22:24:24

标签: node.js express node.js-connect

我没有使用任何模板引擎。 我想将所有内容重定向到我的静态文件/public/desktop.html

app.use(express.static(__dirname + '/public'));

function route(req, res, next) {
    res.sendfile(__dirname + '/public/desktop.html');
    myURL = url.parse(req.url).pathname;
}

如果我使用它并访问网址上的&localhost:8080 / anypath

,它会很好用

但如果我尝试本地主机:8080 /'我一无所获:

app.get('*', route); 

如果我使用其中任何一个,我无法访问任何内容:

app.get('/', route);
app.get('/*', route); 

1 个答案:

答案 0 :(得分:6)

app.use(express.static(__ dirname +'/ public'))正在安装一个静态文件处理程序,它将'/'转换为'/index.html'并发送404,因为它无法找到索引html的

如果您更改订单:

function route(req, res, next) {
  if(req.url!='/'){
    return next();
  }
  res.sendfile(__dirname + '/public/desktop.html');
}

app.get('/', route);
app.use(express.static(__dirname + '/public'));

它可能有用吗?