Google Cloud DNS 和 301 重定向

Google Cloud DNS and 301 redirects

Namecheap 和其他注册商提供了一种在配置 DNS 时设置 HTTP 301 或 302 重定向的方法。这是一个很好的特性,否则您将需要自己实现它。请参阅下面来自 Namecheap DNS 配置页面的屏幕截图。

Google Cloud DNS 是否提供类似的东西?

Google Cloud DNS 不提供"URL Redirect"。这实际上不是 DNS 功能 - 它需要网络服务器来提供 302 重定向服务。你可以用一个小的云函数来实现这个:

exports.redirectFunc = function redirectFunc (req, res) {
  res.set('Location', 'https://example.com/destination');
  res.status(302);
  res.end();
};

虽然Google云解析没有这个功能,但是如果你注册域名Google Domains, it has a "subdomain forwarding" feature (https://support.google.com/domains/answer/6072198 that implements not only 301 / 302 redirects but also provides integrations for G Suite and other platforms that set up other types of synthetic records (https://support.google.com/domains/answer/6069273).

Google 域在与 Google Cloud DNS 相同的 DNS 服务基础架构上运行,但目前您必须在 "Google Domains name servers" 和 Google Cloud DNS 名称服务器之间进行选择服务于您可以使用 Google Cloud DNS API 以编程方式控制的托管区域。这意味着您必须在合成记录等 Domains-specific 功能与 Cloud DNS API 和 GUI 控制台之间做出选择。您 可以 将托管在 Google 域名称服务器上的域的子域委托给 Cloud DNS 中的特定托管区域,因此可以稍微混合搭配。

Firebase 现在有一个非常简单的设置来实现域重定向,只需执行以下操作:

[您的 firebase 项目] > 控制台 > 托管 > 连接域

然后它应该显示以下内容:

尽管 Cloud DNS 尚不直接支持它(请参阅问题:https://issuetracker.google.com/issues/70980380) a workaround can be to deploy an HTTP(S) Load Balancer and set up a redirect in the URL-map and then map the root domain to the IP address of the load balancer via an A record in Cloud DNS (and the same load balancer can be used to serve all subdomains as well without requiring any other Cloud DNS records), see: https://cloud.google.com/load-balancing/docs/url-map-concepts#url-redirects