【问题标题】:Node.js Express wildcard (catch-all) won't work on App rootNode.js Express 通配符(包罗万象)不适用于 App 根目录
【发布时间】:2014-03-31 22:24:24
【问题描述】:

我没有使用任何模板引擎。 我想将所有内容重定向到我的静态文件 /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;
}

如果我使用它并访问 url 上的 'localhost:8080/anypath 效果很好

但是如果我尝试 'localhost:8080/' 我什么都得不到:

app.get('*', route); 

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

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

【问题讨论】:

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


    【解决方案1】:

    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'));
    

    它可能有用吗?

    【讨论】:

    • 实际上它解决了,但导致了另一个问题 function route(){...} 现在读取我 /public 上的所有 css 和 js 文件,为外部 js 输出错误
    • 嘿 - 我已经更新了这个例子,所以它过滤了任何不是“/”网址的请求
    猜你喜欢
    • 2014-12-01
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    • 2014-01-16
    • 2011-08-02
    • 1970-01-01
    • 2018-10-01
    • 1970-01-01
    相关资源
    最近更新 更多