我有一个在本地主机上运行的连接服务器,在我的主干应用程序中,如果我重新加载路由,比如 localhost:8000/fun,服务器显然会返回 Cannot GET /fun,因为 /fun 不存在。
不知何故,服务器需要知道为 index.html/fun 提供服务。我实际上尝试过,但我得到了一些其他错误。以前有没有人处理过这个问题?
TL;DR无法获取 /fun
我有一个在本地主机上运行的连接服务器,在我的主干应用程序中,如果我重新加载路由,比如 localhost:8000/fun,服务器显然会返回 Cannot GET /fun,因为 /fun 不存在。
不知何故,服务器需要知道为 index.html/fun 提供服务。我实际上尝试过,但我得到了一些其他错误。以前有没有人处理过这个问题?
TL;DR无法获取 /fun
你想要modRewrite:
npm install connect-modrewrite --save-dev
在你的 Gruntfile 中:
modRewrite = require('connect-modrewrite')
咖啡:
connect:
server:
options:
port: 8765
open: true
base: ['./']
middleware: (connect, options) ->
middlewares = []
middlewares.push(modRewrite(['^[^\\.]*$ /index.html [L]']))
options.base.forEach( (base) ->
middlewares.push(connect.static(base))
)
middlewares
香草JS:
connect: {
server: {
options: {
port: 8765,
open: true,
base: ['./'],
middleware: function(connect, options) {
var middlewares;
middlewares = [];
middlewares.push(modRewrite(['^[^\\.]*$ /index.html [L]']));
options.base.forEach(function(base) {
return middlewares.push(connect["static"](base));
});
return middlewares;
}
}
}
}
接受的答案不再起作用(2015-10-20),因为连接项目结构发生了变化,并且 connect.static 被移到了自己的包“serve-static”中。因此,您必须通过以下方式调整此答案:
npm install serve-static --save-dev
在你的 Gruntfile.js 中需要它
var serveStatic = require('serve-static');
然后将中间件代码更改为以下内容:
middleware: function(connect, options) {
var middlewares;
middlewares = [];
middlewares.push( modRewrite( ['^[^\\.]*$ /index.html [L]'] ) );
options.base.forEach( function( base ) {
return middlewares.push( serveStatic( base ) );
});
return middlewares;
}
否则效果很好!帮了我很多!