如何使用Iron Router返回404

时间:2014-11-18 18:23:34

标签: meteor iron-router

当我点击使用IR的Meteor应用程序上不存在的路线时,我得到一个带有HTML的200响应(当在浏览器上呈现时)在控制台上显示js错误No route found for path: "/aRoute"

如何让它返回404

3 个答案:

答案 0 :(得分:7)

我发现这个更简单的方式来显示未找到的页面。在router.js

Router.configure({
    layoutTemplate: "layout",
    loadingTemplate: "loading",
    notFoundTemplate: "notFound"
})

此处“notFound”可以是您要显示404错误的任何模板

答案 1 :(得分:7)

现在似乎不是正确处理真正的404的方法(甚至是工作?)。请参阅此问题,例如:https://github.com/EventedMind/iron-router/issues/1055

即使您尝试应该工作的方式,您仍然会得到200状态代码。像下面的代码应该工作:

this.route( 'pageNotFound', {
  path: '/(.*)',
  where: 'server',
  action: function() {
    this.response.writeHead(404);
    this.response.end( html );
  }
});

答案 2 :(得分:0)

this.route('template404', {
  path: '/*'
}

在Router.map的末尾使用它,因为这会捕获每个值 - 如果你在开始时使用每个路径都会被捕获到这个

当然,你可以使它更复杂,例如:

this.route('template404', {
      path: '/posts/*'
    }