2015-01-18 4 views
5

Also erstelle ich ein einfaches Vanity-URL-System, wo ich http://myURL.com/v/some-text haben kann, ein Element aus der Datenbank greifen und auf eine bestimmte URL umleiten, je nachdem, ob der Client mobil/desktop ist oder nicht andere Eigenschaften.Meteor/Iron Router externe Umleitung

Ich baue normalerweise Facebook-Apps, also im Fall von Desktops würden sie auf eine Facebook-URL umgeleitet werden, sonst auf dem Handy kann ich nur normale Routen verwenden.

Gibt es eine Möglichkeit, vom Iron Router auf der Serverseite auf eine externe Website umzuleiten?

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('/'); 
     } 
    } 
}); 

Antwort

13

Hier ist eine einfache 302-basierte Umleitung unter Verwendung einer serverseitigen Route:

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

Wenn Sie http://localhost:3000/google/dogs navigieren, sollten Sie zu https://www.google.com/#q=dogs weitergeleitet.

Beachten Sie, dass, wenn Sie möchten mit 302 bis alle Anfrage Verben (GET, POST, PUT, HEAD, etc.) Sie es so schreiben kann, reagieren würde:

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

Dies kann was Sie wollen, wenn Sie Redirects für SEO-Zwecke tun.

+0

Funktioniert das noch? Ich habe das versucht und ich habe gerade 'Route existiert nicht'. Mit Eisen-Router 1.0.9 – user3795309

+1

Vielleicht haben Sie nicht die Route unter Ihrem 'Server'-Verzeichnis hinzufügen? Ich habe gerade beide Versionen für GET-Anfragen mit IR 1.0.9 validiert. Um zu replizieren: (1) erstelle ein leeres Projekt, (2) entferne alle Dateien, (3) füge 'eiser: router' hinzu, (4) füge eine Datei' server/main.js' mit einem der obigen Beispiele hinzu, (5) Starten Sie Meteor und navigieren Sie von Ihrem Browser zur Route. –

+0

Ist es möglich, 302 Redirect in Client-Seite zu tun? – digz6666