2014-11-18 9 views
9

Quando si percorre una route che non esiste sulla mia app Meteor che utilizza IR, ottengo una risposta 200 con un HTML che (quando viene visualizzato su un browser) mostra un errore js sulla console dicendo che No route found for path: "/aRoute".Come restituire 404 utilizzando Iron Router

Come può un reso restituire 404?

risposta

7

Non sembrano essere un modo corretto (o anche di lavoro?) Di gestire reali di 404 proprio adesso. Vedere questo problema ad esempio: https://github.com/EventedMind/iron-router/issues/1055

Anche quando si tenta di utilizzare il metodo , si otterrà comunque un 200 codice di stato. Come questo codice sotto il quale dovrebbe funzionare:

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

Grazie! Dovremo aspettare che il problema venga risolto. –

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

Usa alla fine del vostro Router.map, Causa questo coglie ogni valore - se si utilizza all 'inizio di ogni percorso sarà catturato a questa

Naturalmente si può rendere più complessa, ad esempio:

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

Ricevo lo stesso errore con la prima soluzione. –

+0

Percorso di prova: '*'. – Sindis

+0

Non funziona neanche. Hai funzionato? su quale versione di Meteor/IR? –

6

Trovo questo modo molto più semplice per mostrare la pagina non trovata. In router.js

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

Qui "NOTFOUND" potrebbe essere qualsiasi modello in cui si desidera visualizzare errore 404

+0

Il problema è che sto cercando di restituire un codice di errore per un'altra app da consumare. Inoltre, questo codice non è per il router client invece di quello del server? –

+2

no, questo * non * restituisce un codice di stato 404, il codice è ancora 200. –

Problemi correlati