部署到生产环境时使用 AppEngine 和 CodeIgniter PHP 重定向循环


Redirect loop with AppEngine and CodeIgniter PHP when deploying to production

我刚刚将我的CodeIgniter PHP AppEngine项目部署到云中,当我尝试访问我的一个URL时,它会导致重定向循环。我尝试使用不同的浏览器和隐身模式,但它们仍然会导致相同的问题。

我在我的app.yaml中设置了一个URL,它确实有效。

- url: /tos
  script: tos.php

所以/tos 就可以工作了。

但是对于我的常规 CodeIngiter 索引.php程序,它会导致重定向循环,并且随着地址栏中的一些长 URL 而失败。以下是相关的app.yaml:

- url: .*
  script: index.php

http://even-crossing-385.appspot.com/base/data/home/apps/s~even-crossing-385/1.371577713118072254/login

在我的本地开发盒上运行良好。

我在这里缺少某种配置吗?

谢谢!

我有同样的问题,在带有 WAMP 的本地计算机中它工作正常,但使用 google 应用程序引擎它只显示默认控制器,我认为问题是文件 app.yaml 但我无法很好地设置重定向规则

我无法让它工作,但我最终找到了 CodeIgniter 的这个黑客,它在本地和 AppEngine 上都有效。所以我使用它并在那里复制了我的控制器、模型和视图,然后一切都找到了。我的猜测是,有某种底层环境变量在投入生产时不起作用。

- url: /
  script: ci-googleappengine-test/index.php
- url: /(.+)
  script: ci-googleappengine-test/index.php

它会工作,为我工作。 ci-googleappengine-test = 文件夹名称

我有相反的效果。 它无法在本地使用 App Engine SDK,但当我将其部署到 GAE 时,它运行良好。 此线程中描述的"CodeIgniter 黑客"对我不起作用。我终于通过修改应用程序/配置/配置中的 config.php 文件来让它工作.php

我注释掉了base_url、index_page和uri_protocol的现有配置设置,并将其替换为以下内容:

if(isset($_SERVER['SERVER_SOFTWARE']) && strpos($_SERVER['SERVER_SOFTWARE'],'Google App Engine') !== false)
{
//Production settings go here
$config['base_url'] = '';
$config['index_page'] = '';
$config['uri_protocol'] = 'AUTO';
}
else
{
//Local Development settings go here (change "13080" to whatever number the localhost SDK generates for you )
$config['base_url'] = 'http://localhost:13080/';
$config['index_page'] = 'index.php';
$config['uri_protocol'] = 'PATH_INFO';
}

老实说,我不知道为什么这有效,但它确实如此。