【问题标题】:Meteor / Iron Router external redirectionMeteor / Iron Router 外部重定向
【发布时间】:2015-01-19 07:10:21
【问题描述】:

所以我正在创建一个基本的虚 URL 系统,我可以在其中拥有 http://myURL.com/v/some-text,从数据库中抓取一个项目并根据客户端是否是移动/桌面和其他功能重定向到特定 URL。

我通常构建 Facebook 应用程序,因此对于桌面应用程序,它们将被重定向到 Facebook URL,否则在移动设备上我可以使用普通路由。

有没有办法从服务器端的 Iron Router 重定向到外部网站?

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

【问题讨论】:

    标签: javascript meteor iron-router


    【解决方案1】:

    这是一个使用服务器端路由的简单的基于 302 的重定向:

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

    如果您导航到http://localhost:3000/google/dogs,您应该被重定向到https://www.google.com/#q=dogs

    请注意,如果您想以 302 响应 所有 请求动词(GET、POST、PUT、HEAD 等),您可以这样写:

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

    如果您出于 SEO 目的进行重定向,这可能是您想要的。

    【讨论】:

    • 这还能用吗?我试过这个,我只是得到'路线不存在'。使用 Iron 路由器 1.0.9
    • 也许你没有在server目录下添加路由?我刚刚使用 IR 1.0.9 验证了 GET 请求的两个版本。要复制:(1)创建一个空项目,(2)删除所有文件,(3)添加iron:router,(4)使用上述示例之一添加文件server/main.js,(5)启动meteor并导航到浏览器中的路线。
    • 客户端可以做302重定向吗?
    猜你喜欢
    • 2015-12-13
    • 1970-01-01
    • 2014-07-02
    • 1970-01-01
    • 2014-05-07
    • 2013-11-21
    • 1970-01-01
    • 2023-03-12
    • 2017-06-17
    相关资源
    最近更新 更多