【问题标题】:App engine subdomain redirects on static files (HTTP 301)静态文件上的应用引擎子域重定向 (HTTP 301)
【发布时间】:2015-07-23 10:27:31
【问题描述】:

我有一个域(比如说)example.com,我想从 裸域 提供它的内容(主要是静态文件 - 客户端应用程序)。我还想接受子域,这样它们就不会因为 DNS 或 404 错误而结束。用户通常将 www 放在域前面(无论出于何种原因)。

我确实在 appengine 控制台中设置了自定义域,裸域以及 *(通配符)。它显示了我需要拥有的 DNS 记录,所以我也设置了它们......完全相同,指向 appengine IP 的 A/AAAA 记录和 * CNAME 指向 appengine 别名(googlehosted)。

我已经阅读了它在https://cloud.google.com/appengine/docs/domain?csw=1 上的默认行为方式,我想对其进行一些更改。现在可以从所有域 example.com、www.example.com、blog.example.com 等访问该页面。

我想要的是在不添加任何脚本处理程序的情况下将所有转到裸域以外的任何请求重定向到裸域。

使用 Apache 和 modrewrite 解决方案很简单,因为它有一个 RewriteCond %{HTTP_HOST}RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]... 但是否可以使用 app.yaml 做到这一点?我在https://cloud.google.com/appengine/docs/python/config/appconfig 找不到它。

我不想在 javascript 中重定向(不适用于图像、css 等)并且我不喜欢所有文件的脚本处理程序的想法,因为恕我直言,它需要有一些性能损失。

【问题讨论】:

  • 如果没有后端处理程序 (python/java/go/php...),这是不可能的,但您可以为这个有点相关的问题加注星标:code.google.com/p/googleappengine/issues/detail?id=444
  • 我不太清楚你所说的“我想要的是将所有请求重定向到裸域以外的任何地方到裸域而不添加任何脚本处理程序”是什么意思。用更清晰的语言解释?
  • 您的意思是无需使用javascript或服务器代码进行重定向就可以进行重定向吗?
  • 是的,完全正确(原因在最后的原始帖子中)。 app.yaml 可以配置为发送一些 headers,但不是可选的基于域名。
  • 如果我理解正确,您希望将任何子域重定向到裸域吗?您介意在您的 DNS 区域文件中准确发布您当前拥有的内容以及您在 Developers Console > Compute > App Engine > Settings > Custom domains 部分中拥有的内容吗?

标签: google-app-engine redirect


【解决方案1】:

因此,您似乎希望将任何子域重定向到您的裸域,而无需编写处理程序。虽然您可以在区域文件中的子域上使用 CNAME 通配符来定向到裸域“@”,但这是不可取的,因为并非每个提供商都支持它。您可以在 DNS here 等非常标准化的系统中阅读更多关于这种奇怪边缘情况的信息。

虽然您可以使用dispatch file(python 文档,但其他语言有类似的)来捕获子域请求并将它们发送到一个特殊的、简化的“3xx 重定向到裸域”模块,而不是托管运行的 GCE 实例前端Apache,您将无法使用 CNAME 方法更改用户的地址栏,尽管它们将被定向到在您的区域文件(“裸域”)的顶点级别指定的 IP 地址(A/AAAA 记录),除非你实现了这样一个模块。 Apache 重写规则发送的正是这样的 HTTP 3xx 响应,这些响应重定向浏览器以更改其 URL 并请求指定的 URL(在本例中为您的裸域)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-19
    • 2013-01-19
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-08
    相关资源
    最近更新 更多