【问题标题】:New version of google app engine produces 404 error (PHP 5.5)新版谷歌应用引擎产生 404 错误 (PHP 5.5)
【发布时间】:2016-04-12 16:23:23
【问题描述】:

我有一个在运行时环境 php 5.5 上通过谷歌应用引擎运行的网站。我正在尝试部署应用程序的新版本(我通过更改 app.yaml 中的版本号来实现此目的,参考这里:Configuring with app.yaml)并部署应用程序。

可以通过 www.my-app-name.appspot.com 访问我当前的站点(工作正常),我应该能够在 www.2-dot-my-app-name 上查看我的新应用程序版本。 appspot.com,但是在尝试查看版本 2 时出现 404 错误。

我的应用程序的版本 1 和版本 2 相同,唯一的区别是版本 2 在 app.yaml 中的版本为“2”。我在这里错过了一步吗?就配置而言,我需要做些什么来查看版本 2? (注意:我不想让第 2 版上线,我只想部署并测试它,看看在上线之前是否有一些更改有效)。

编辑:我尝试测试将所有流量路由到我的应用的版本 2 会做什么。在这种情况下,应用程序的版本 2 可以工作,但版本 1 不能。看起来当所有流量都路由到特定版本时,该版本会使用 url “myappname.appspot.com”提供。任何其他版本都使用 URL“version-dot-myappname.appspot.com”提供。任何人都知道我可以如何配置我的应用程序以使这些 url 工作?

【问题讨论】:

  • 有多少实例正在运行?每个版本至少需要一个。
  • 嘿@snakecharmerb 感谢您的提示。我实际上只是想出了问题所在。请参阅下面我的回答。

标签: php google-app-engine


【解决方案1】:

根据Routing via URL 文档,新应用版本的地址应为2-dot-my-app-name.appspot.com,不带前导www.

https://version-dot-app-id.appspot.com
http://version.app-id.my-custom-domain.com
    Sends the request to an available instance of the given version of the default module.

【讨论】:

  • 嗨,丹,感谢您的回答。不幸的是,这似乎不是导致路由错误的原因。无论前导 www 是否存在,都会发生相同的 404 错误。
  • 您是否在开发者控制台中看到版本 2 为 Serving? (见cloud.google.com/appengine/docs/python/console/#versions
  • 是的,应用的两个版本的状态都是“服务中”。
  • 如果您将鼠标悬停在 2 上方,它会转换为带有该应用版本 URL 的链接,您可以关注该链接。如果您仍然得到 404,那么您必须对其进行调试,首先在日志查看器中检查该版本的日志(通过从第一个下拉列表/按钮导航来选择版本。
  • 感谢您的提示。使用这种方法我仍然会收到 404 错误。我检查了日志,但它们似乎不存在,因为该站点无法从该 URL 获取任何请求。奇怪。
【解决方案2】:

我发现了罪魁祸首。我有一个 PHP 配置文件,将标头位置更改为 'http://www.'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']。尽管这种类型的配置适用于您的默认应用程序,但在测试新版本时将不起作用,因为在测试新版本时,路由不能包含前导“www”。希望这可以帮助遇到同样问题的其他人。

注意:如果您使用流量拆分,只要您的自定义域映射正确,用户访问您的新版本就不会出现任何问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-28
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    相关资源
    最近更新 更多