我正在将应用从网站的根域迁移到子域。根域上的新应用程序是用Meteor编写的,并使用铁路由器。为了避免破坏外部链接,我想301将meteor应用程序未处理的所有URL重定向到子域。
我似乎无法弄清楚如何使用铁路由器做到这一点。由于我正在进行301重定向,因此它是一个服务器路由(通过{where:' server'})但是当我这样做时,catchall路由优先于所有其他现有路由,即使它是在我的路线文件中进一步定义。
版本:
Meteor 1.0.3.1
铁:路由器1.0.7Router.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'});
答案 0 :(得分:2)
我认为你的路线模式是错误的。请尝试以下模式:
Router.route('/:path?', function () {
this.response.writeHead(301, {'Location': 'https://subdomain.thedomain.com/' + this.params.path});
this.response.end();
}, {where: 'server'});
?
表示参数是可选的。
答案 1 :(得分:0)
看起来这是实现目标的更好方法:
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();
});
有关此内容的更多信息:http://meteorpedia.com/read/HTTP_Redirects