【发布时间】:2009-05-12 23:16:55
【问题描述】:
Facebook 应用程序托管在我的服务器上,例如 http://server.com/projects/fbapp/,但只能在 Facebook 中查看,例如 http://apps.facebook.com/fbapp/。
使用 CakePHP 会带来一个问题 - 路由应该以“/project/fbapp”为前缀还是只是“fbapp”?
这是一个问题,因为路由不仅用于路由入站请求,还用于生成链接(和表单操作等)。
作为一个组合,我现在每条路线都有两条路线说明:
Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));
Router::connect('projects/fbapp/pages/*', array('controller' => 'pages', 'action' => 'display'));
第一个不需要前缀,因为我在 bootstrap.php 中包含了一行:
Configure::write('App.base', '/fbapp');
在反向路由操作期间启动。
我的问题是是否有更优雅的方式来做到这一点?这看起来很丑,我敢肯定它不是很蛋糕。
【问题讨论】:
-
我知道这有点糟糕的答案,但是运行 server.com:8080/fbapp 怎么样?
-
我确实想到了!我认为它与我当前的解决方案一样笨拙/有效。我想这是学术性的,但我真的想要一个优雅的解决方案。
-
对来自 facebook 的流量进行 (apache) 重写不是最优雅的解决方案吗?你的内部机器只需要处理一个路径,如果你想在以后将应用程序与另一个服务/平台集成,你只需要添加另一个重写规则而不是弄乱应用程序本身。
-
这听起来确实是一条有希望的途径。我猜它会在 .htaccess 文件中“发生”,所以它是可移植的。和蛋糕。想把它变成(赏金候选人)答案吗?
-
你不需要在 Apache 和 CakePHP 中做任何事情;你的配置是错误的。此外,在 Apache 中执行此操作意味着您与该服务器绑定,如果您想更改为任何其他服务器,则不会。正确设置 CakePHP 配置是正确的方法。看我的回答。