2014-12-05 112 views
1

我希望能够匹配这样的路径: /path/anything/goes/here/and/can/be/an/arbitrarily/long/path铁:路由器“globbing”不起作用

所以,我试图以下所有:

Router.route('/path/*', function(){ 
    this.render('home'); 
}); 

我也试过的路径:'/path/:something(*)'和我还试图options对象,指定的路径中的第二个参数Router.route:与动作功能沿着{path: '/path/*', action:myActionFunction}。我甚至用Router.map代替Router.route尝试,规定在以下两个:

https://gentlenode.com/journal/meteor-11-iron-router-cheatsheet/18

http://www.manuel-schoebel.com/blog/iron-router-tutorial

但尽管如此,要到/path/anything/goes/here不起作用。它带我到默认的铁:路由器的错误页面:

哎呀,看起来像有在客户端上的路由或URL服务器:“HTTP本地主机... :1710 .../path/this/should/work/according/to/the/above/links。“

任何帮助表示赞赏,感谢。

回答

2

尝试

'/(.*)'

'/path/(.*)'

如果URL确实是domain.com/path/

我从发球路线 '/(.*)'通过查阅来自这个文件的一个集合。

如果您需要任何路由,请将流量路由放入Meteor.startup中,然后在您的路由器文件客户端中使用精确定义的路由。

希望这可以帮助你。

+0

我看到你在那里做了什么!我修改了一下你的解决方案,以适应我的情况。这很奇怪,因为我检查的每个资源都省略了小数点。然后我意识到这只是变成了一个正则表达式... 我用过:''/ path /([_]?[a-zA-Z0-9] *)*'' 因为我只想匹配alnums(和一个可选的前导下划线)谢谢,你帮了我一大堆! – Clover 2014-12-06 03:14:10

+0

你确定你的第二个陈述吗?如果这个流行病在启动,那么在他们有机会被细粒度的路线看到之前,它不会抓住一切吗?我以为Meteor.startup在router.js之前运行? – Clover 2014-12-06 03:20:34

+0

@Clover不,我不确定第二个陈述。我所知道的是,当我的glob(或可选)路由不在启动时,它在包之前的路由中运行。tmeasday建议在启动时放置博客/可选路线以防止该行为。看到这个问题#:https://github.com/EventedMind/iron-router/issues/1007 – 2014-12-06 11:38:41