我有一个Node + Ember应用程序。我遇到了一些关于路线的问题。 Node和Ember都处理路由,我有一些我希望Node处理的路由,但有些路由,我想让Ember处理。例如,当页面加载时,Node的路由器会启动,因此我在Ember声明的任何路由都是无用的。
假设我在Ember JS中有一个名为'settings'的路线。当我从Ember的另一个视图使用{{#link-to}}帮助器导航到“http://myapp.com/settings”时,我可以看到该页面。但是,一旦我在该页面上并且重新加载,我得到404,因为Node的路由器被调用并且该路由未在Node中声明。我该如何解决这个问题?
答案 0 :(得分:1)
我没有使用节点,但我想这个概念对你来说可能与我的应用程序相同(我使用的是Java Spring)。您应该修改到app.get('/*')
的路由,或者在节点中使用通配符并返回Ember的index.html。所以基本上,任何url / all all都会得到你的Ember app,而不仅仅是/ route
灰烬处理其余部分。看一下这个帖子(它的nginx,但是校长也一样):http://discuss.emberjs.com/t/how-to-serve-all-routes-on-a-production-server-exactly/6372/2
如果链接在将来的某个时间点发生故障,这里有一个有用的nginx配置,它使用ember index.html页面重写assets
下的所有规则:
server {
listen 80 default;
server_name my.domain.com;
root /path/to/app/root;
location / {
rewrite ^ /index.html break;
}
location /assets/ {
# do nothing and let nginx handle this as usual
}
}