【问题标题】:How to direct www to non-www domain on Google App Engine (GAE)如何在 Google App Engine (GAE) 上将 www 定向到非 www 域
【发布时间】:2022-01-24 21:02:03
【问题描述】:

如何在没有 www 的情况下将 www. 子域定向到 domain.tld?我习惯于自动执行此操作。我应该考虑配置 app.yaml、dispatch.yaml 还是其他方法?

【问题讨论】:

  • 您是否将域的 A 记录设置为指向应用引擎?之后,进行重定向的最佳方法是在您自己的代码中。
  • @gaefan - domain.tld 和 www.domain.tld 完全按照 GAE 告诉我的设置方式进行设置。当我使用 firebase 时,我不必使用自己的代码,所以我认为这可以通过配置文件来完成?
  • 请详细说明问题以包含用例?要配置哪个 GCP 服务,GAE?标准/弹性?谁是域名服务提供商,是 Google Domains 还是第三方?

标签: google-app-engine


【解决方案1】:

您所描述的内容称为“裸域”,这在自定义域的documentation 中有描述。一旦您的服务已经映射到 App Engine 中的自定义域,文档就会提供 mapping a custom domain to your appupdating the DNS records at your domain registrar 的步骤。

要重定向您的请求,您可以通过 dispatch.yaml 文件在 App Engine 中使用通配符映射和服务。您可以找到有关如何执行此操作的说明here。如果您想了解有关路由请求的更多信息,您可以查看此documentation,它还重点介绍了创建调度文件。处理程序仅限于通过执行应用程序代码或通过提供与代码一起上传的静态文件(例如图像、CSS 或 JavaScript)来处理 URL。因此,他们不能直接将一个 URL 重定向到另一个。

您需要通过运行一个脚本来处理您的 URL,该脚本执行将重定向您的 URL 的代码。 注释显示complete example,因为脚本运行 main.py,然后重定向 URL

【讨论】:

  • 我尝试通过添加 dispatch: -url: "*.domain.tld" service: default 来使用 dispatch.yaml 方法,但这不起作用。我认为这只是加载一个模块但保持 URL 相同。如果您认为答案是使用不是我正在寻找的答案的代码从 www.domain.tld 重定向到 domain.tld。
  • 更正:-url: "*.dufflebagboys.net/*"
  • 我想知道您的用例或您希望如何重定向,以便我可以将您的要求与我的解决方案相匹配。还想知道您是否使用 App Engine Flex/Standard。我认为问题在于在域级别完成的重定向使用 CNAME 记录,所以如果 www.example.com 将是 example.com 的 CNAME。现在这可行,但请求标头仍会将请求的域显示为 www.example.com 作为预期目标。在 DNS 中没有办法改变这一点,它必须在应用程序层完成,换句话说,在 Web 服务器级别。
  • 假设 AppEngine 是接收者,它可以接收请求并更改请求的 DNS 名称。这听起来很简单,但在浏览器行为等方面存在许多问题。我将域 www.example.com 与负载均衡器关联,并让负载均衡器进行永久重定向。如果这不是一个选项,请使用 www。转到接受接收到的请求的云函数或类似函数,并将 302 重定向响应返回到 example.com 的基本域
  • @Mickey,请您回答以上问题。我想根据您的要求改进我的答案(因为这个答案被否决了,并且您的问题应该有一个有效的接受/赞成的答案)。如果您没有详细说明您的设置并让我们知道您希望如何重定向,我无法解决您的问题并提供您正在寻找的答案。请恢复。
猜你喜欢
  • 1970-01-01
  • 2014-12-07
  • 2015-02-27
  • 2022-01-17
  • 2014-03-25
  • 1970-01-01
  • 2020-12-31
  • 1970-01-01
  • 2013-03-06
相关资源
最近更新 更多