如何将所有请求重定向到特定域名?

时间:2017-02-11 18:21:55

标签: javascript node.js google-app-engine express google-cloud-platform

我在App Engine上为我的网站设置了SSL和自定义域名。

完全正常:我可以转到https://www.mywebsite.com并加载页面。

但我想做出以下改变。

如果我去mywebsite.com,我会立即被重定向到https://www.mywebsite.com

我该怎么做?

4 个答案:

答案 0 :(得分:1)

如果您使用的是expressjs,那么下面的代码就可以了。

A

答案 1 :(得分:1)

您可以在开始添加路线之前进行此操作。它将检查每个请求的协议,如果它通过http

进入,则重定向到https版本
app.use(function(req, res, next) {
   if (req.protocol === 'http') {
      var host = req.host.replace('www.', '');
      return res.redirect('https://www.' + host + req.originalUrl);
   }
   next();
});

请注意,如果nginx / apache正在处理https内容并转发到非https节点服务器,这是不够的。您需要查看条件中的标题而不是req.protocol(类似于@Asif所具有的条件)

答案 2 :(得分:0)

您需要在服务器的根目录下创建.htaccess文件以进行重定向。

.htaccess文件

<IfModule mod_rewrite.c>
RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{REQUEST_URI} folder 
RewriteRule ^(.*)$ https://www.urserver.com/folder/$1 [R,L]
</IfModule>

使用上限可以重定向到您的域

答案 3 :(得分:0)

您还可以将裸域 mywebsite.com映射到GAE应用,另外映射到www.mywebsite.com。基本上,通过重复Adding a custom domain for your application的过程并在步骤4选择裸域(强调我的):

  

继续执行添加新自定义域表单的下一步   选择要指向App Engine应用程序的自定义域:

     
      
  • 指定要映射的域和子域。

         

    注意:裸域和 www 子域名已预填充   形式。

         
        
    • 裸露的域名(例如example.com)会映射到http://example.com
    •   
    • 子域名(例如www)会映射到http://www.example.com
    •   
  •   
  • 点击提交映射以创建所需的映射。

  •   

优点:

  • 更简单
  • 适用于标准和柔性环境应用,无论应用程序的语言如何
  • 也适用于静态内容,与基于应用代码更改的解决方案不同

缺点:

  • 至少对于标准环视应用,https次请求可能有2次重定向:

    • 第一个是301重定向到http://www.mywebsite.com
    • 第二个是302重定向到https://www.mywebsite.com