2015-01-18 21 views
5

Quindi sto creando un sistema di base di vanity URL, dove posso avere http://myURL.com/v/some-text, prendere un elemento dal database e reindirizzare a un URL specifico in base al fatto che il client sia mobile o desktop e altre caratteristiche.Reindirizzamento Meteor/Iron Router

Generalmente creo le app di Facebook, quindi nel caso del desktop verrebbero reindirizzate a un URL di Facebook, altrimenti sui dispositivi mobili posso semplicemente utilizzare le rotte normali.

C'è un modo per reindirizzare da Iron Router sul lato server a un sito Web esterno?

this.route('vanity',{ 
    path: '/v/:vanity', 
    data: function(){ 
     var vanity = Vanity.findOne({slug:this.params.vanity}); 

     // mobile/desktop detection 

     if(vanity){ 
      if(mobile){ 
       // Redirect to vanity mobile link 
      }else{ 
       // Redirect to vanity desktop link 
      } 
     }else{ 
      Router.go('/'); 
     } 
    } 
}); 

risposta

13

Ecco un semplice reindirizzamento 302-based utilizzando un percorso sul lato server:

Router.route('/google/:search', {where: 'server'}).get(function() { 
    this.response.writeHead(302, { 
    'Location': "https://www.google.com/#q=" + this.params.search 
    }); 
    this.response.end(); 
}); 

Se si passa a http://localhost:3000/google/dogs, si dovrebbe essere reindirizzato a https://www.google.com/#q=dogs.

Si noti che se si desidera rispondere con un 302 a tutti verbi richiesta (GET, POST, PUT, HEAD, etc.) è possibile scrivere in questo modo:

Router.route('/google/:search', function() { 
    this.response.writeHead(302, { 
    'Location': "https://www.google.com/#q=" + this.params.search 
    }); 
    this.response.end(); 
}, {where: 'server'}); 

Questo può essere cosa vuoi se stai facendo reindirizzamenti per scopi SEO.

+0

Funziona ancora? Ho provato questo e ho appena avuto 'percorso non esiste'. Usare il router ferro 1.0.9 – user3795309

+1

Forse non hai aggiunto il percorso sotto la directory 'server'? Ho appena convalidato entrambe le versioni per le richieste GET usando IR 1.0.9. Per replicare: (1) creare un progetto vuoto, (2) rimuovere tutti i file, (3) aggiungere 'iron: router', (4) aggiungere un file' server/main.js' con uno degli esempi sopra, (5) avvia meteor e naviga verso il percorso dal tuo browser. –

+0

È possibile eseguire il reindirizzamento 302 sul lato client? – digz6666

Problemi correlati