【发布时间】:2013-12-17 01:17:21
【问题描述】:
我想请教您如何为 AWS 上的 Cakephp Web 应用程序正确设置路由。我让 Cakephp 在 AWS Elastic Beanstalk 上运行,使用 PHP 配置,然后我为我的域(例如 foo.com)设置了一条 A 记录,该记录链接到 Cloudfront CDN,该 CDN 链接到 Beanstalk 的默认 ELB。一切正常,直到我发现 Cakephp 处理的所有重定向都将重定向到 ELB 的默认公共 DNS (elb-abc123.elb.amazonaws.com/page/) 而不是 foo.com/page/。我知道 elb 有一个叫做 CName 的东西,但我无法让它工作 (http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/using-domain-names-with-elb.html?)。而且我不确定这是否与 .htaccess 有关。
这是我的域的 53 号路由设置:
foo.com. A ALIAS examplecode.cloudfront.net (examplecode...)
www.foo.com. A ALIAS examplecode.cloudfront.net (examplecode...)
以及 CandFront 设置:
Alternative Domain Names (CName): foo.com, www.foo.com
好的,这是我所面临的一个例子:
架构:客户端->cloudfront->elb(beanstalk)->EC2
1. 当客户端在他/她的浏览器中输入foo.com 或www.foo.com 时,一切正常。
2. 当客户端尝试请求安全页面foo.com/account/index(例如帐户页面)时,Cakephp 要求登录,因此重定向由 cakephp 控制器处理:$this->redirect(array('controller' => 'secure', 'action' => 'login'));。
3. 预期的登陆 url 应该是foo.com/secure/login/ bur 结果是elb-abc123.elb.amazonaws.com/secure/login。
谁能帮帮我,谢谢。
【问题讨论】:
-
很多信息,但请务必提及您的确切 CakePHP 版本!
-
嗨,ndm:我使用的是 Cakephp 2.4.3(最新的)。感谢您的解决方案,我需要 2~3 天来更新应用程序。
标签: cakephp amazon-web-services amazon-cloudfront amazon-elastic-beanstalk amazon-route53