在控制器的init方法中调用以下类型的url时,我在两个不同的服务器上得到两个不同的结果:
http://address.com/index/action/?start=2009-04-18&end=2009-04-21
致电
echo $ _GET ['start'];
在一台服务器上给我2009-04-18,在另一台服务器上没有任何内容。
然而,这是奇怪的部分,添加
出口();
之后,echo语句导致2009-04-18在两台服务器上按预期显示。
FYI转储请求参数显示它们在一台服务器上可用但在另一台服务器上没有...除非你调用exit();
世界上有什么可能造成这种情况?我意识到这不是在ZF中构建URL的方法,但它是在这个特定项目中完成它的方式。也许某种自定义路线会有所帮助吗? STill没有解释exit(); bit导致$ _GET变量显示。
编辑:为了解决这个问题,我现在写了一条自定义路线,但是?在网址中搞砸了。通过包含它,似乎强制GET变量并覆盖我的自定义路由。离开它,在我创建的路线中一切正常,但我没有选择删除它?任何人都知道如何使自定义路由优先于那时填充的GET变量?在那里?
答案 0 :(得分:1)
我的猜测是$ _GET ['start']实际上是在两台服务器上运行,问题是在此语句之后没有显示任何问题的问题,但是echo的输出仍然在输出缓冲区中。如果你在echo之后执行flush(),你应该能够看到输出,那么任何崩溃的后续词仍会崩溃,但你会看到日期。
我不确定你在做什么路由(没有足够的代码可以查看),但你的查询字符串(在?后面的所有内容)与你的路由完全不同。如果您要使用路由,则需要使用ZF快速入门页面上提供的.htaccess文件启用mod_rewrite。
我认为你想制作自己的自定义路由器(不仅仅是路由),然后使用$ _GET参数路由到你想要的控制器,以及它需要的参数。默认路由器不会使用QueryString执行复杂的操作,至少不是我上次检查的时间。
答案 1 :(得分:1)
检查损坏的服务器上的.htaccess文件。 http://framework.zend.com/manual/en/zend.controller.router.html