2015-01-18 9 views
5

Tak więc tworzę podstawowy prosty system URL, w którym mogę uzyskać http://myURL.com/v/some-text, pobrać element z bazy danych i przekierować do konkretnego adresu URL na podstawie tego, czy klient jest mobilny/stacjonarny i czy nie. Inne funkcje.Zewnętrzne przekierowanie Meteor/Iron Router

Zwykle tworzę aplikacje na Facebooku, więc w przypadku pulpitu będą przekierowywane na adres URL Facebooka, w przeciwnym razie na urządzeniach mobilnych mogę zwyczajnie korzystać z normalnych tras.

Czy istnieje sposób przekierowania z programu Iron Router na serwerze do zewnętrznej witryny internetowej?

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

Odpowiedz

13

Oto proste przekierowanie 302 na bazie stosując drogę po stronie serwera:

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

Jeśli przejdź do http://localhost:3000/google/dogs, powinieneś zostać przekierowany do https://www.google.com/#q=dogs.

Pamiętaj, że jeśli chcesz, aby reagować z 302 do wszystkich żądanie czasowników (GET, POST, PUT, HEAD, itd.) Można napisać tak:

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

To może być co chcesz, jeśli robisz przekierowania do celów SEO.

+0

Czy to nadal działa? Próbowałem tego i właśnie dostałem "route does not exist". Używając żelaznego routera 1.0.9 – user3795309

+1

Być może nie dodałeś trasy do swojego katalogu 'server'? Właśnie sprawdziłem obie wersje dla żądań GET, używając IR 1.0.9. Aby powielić: (1) utwórz pusty projekt, (2) usuń wszystkie pliki, (3) dodaj 'iron: router', (4) dodaj plik' server/main.js' z jednym z powyższych przykładów, (5) uruchom meteor i przejdź do trasy z przeglądarki. –

+0

Czy można wykonać przekierowanie 302 po stronie klienta? – digz6666