在我的expressjs应用程序中,公共资产以这种方式加载:
app.use(express.static(__dirname + '/public'));
然后我将所有请求重定向到索引,以使用 Backbone 处理每个路径
app.get('*', routes.index);
为什么 / public 文件夹也是重定向的?
此外,如果我尝试添加'/ public'作为第一个参数,它也不起作用:
app.use('/public', express.static(__dirname + '/public'));
答案 0 :(得分:1)
对于任何与静态文件服务相关的问题:
在评估问题的可能解决方案之前,请务必在 app.use(app.router)之前定义 express.static 。
我在网上找到了很多例子:有时它在下面定义,有时不是。 把它放在首先解决了我所有的问题。
app.use(express.static(path.join(__dirname + '/public')))
app.use(app.router)
答案 1 :(得分:1)
在app.router
之前放置静态路由器之后,express将首先尝试通过匹配静态文件夹(public
)中的文件来提供请求,如果没有匹配,它会将其传递给{ {1}}以下规则与所有内容匹配;
routes.index
另外,要匹配app.get('*', routes.index);
目录中的任何文件,您无需在请求网址中使用public
。
例如,要获取/public/
或public/images/icon.png
,您只需访问public/js/scripts.js
或/images/icon.png
。如果您调用/js/scripts.js
请求,它将与静态目录中的任何内容都不匹配,并将请求传递给/public
。
希望它有所帮助。