2015-02-06 1 views
0

웹 사이트의 루트 도메인에서 하위 도메인으로 앱을 이전하고 있습니다. 루트 도메인의 새로운 앱은 Meteor로 작성되었으며 철제 라우터를 사용합니다. 외부 링크가 끊어지지 않도록하려면 유성 앱이 처리하지 않은 모든 URL을 하위 도메인으로 리디렉션하고 싶습니다.Meteor Iron Router Catch-All 301 리디렉션

나는 철제 라우터와 함께 이것을하는 방법을 알아낼 수 없습니다. 301 리다이렉트를하고 있기 때문에 {where : 'server'}를 통해 서버 경로가됩니다.하지만 이렇게하면 catchall 라우트가 다른 기존 라우트보다 우선합니다. routes 파일.

버전 :

유성은 1.0.3.1

철 : 라우터는 1.0.7

Router.route('/', function() { 
    this.render('home'); 
}); 
Router.route('/about', function() { 
    this.render('about'); 
}); 

// Takes precedence over all above routes (due to server?) 
Router.route('/(.*)', function() { 
    this.response.writeHead(301, {'Location': 'https://subdomain.thedomain.com/' + this.params[0]}); 
    this.response.end();  
}, {where: 'server'}); 

답변

2

나는 경로 패턴이 잘못 생각합니다. 아래 패턴을 시도해보십시오.

Router.route('/:path?', function() { 
    this.response.writeHead(301, {'Location': 'https://subdomain.thedomain.com/' + this.params.path}); 
    this.response.end();  
}, {where: 'server'}); 

? 매개 변수가 선택 사항임을 의미합니다.

0

이 당신의 목표를 달성하기 위해 더 나은 방법 인 것 같습니다 : http://meteorpedia.com/read/HTTP_Redirects

이에 대한 자세한 내용은

WebApp.connectHandlers 
    .use('/url_to_redirect', function(req, res, next) { 
    // 301 Moved Permanently 
    res.writeHead(301, { 
     'Location': '/url_where_we_want_to_go' 
    }); 
    res.end(); 
    });