无需修改的php Zend/MVC

无需修改的php Zend/MVC,php,model-view-controller,zend-framework,Php,Model View Controller,Zend Framework,我在网上的许多博客中都提到过,但我认为应该在这里讨论一下。 当我们在PHP中有一个MVC框架(我对ZEND感兴趣),但我们的主机不提供mod_rewrite时,我们该怎么办? 有什么“捷径”吗?我们能否以任何方式转移控制权(以便在页面之间发生映射)?有什么想法吗? 谢谢:-)在今天的托管环境中,修改几乎是必不可少的。但不幸的是,并不是每个人都明白这一点 很多大型php程序(我想是magento,但大多数都能应付)在mod_rewrite不可用时有一个非常好的url回退模式 URL最终看起来像ww

我在网上的许多博客中都提到过,但我认为应该在这里讨论一下。 当我们在PHP中有一个MVC框架(我对ZEND感兴趣),但我们的主机不提供mod_rewrite时,我们该怎么办? 有什么“捷径”吗?我们能否以任何方式转移控制权(以便在页面之间发生映射)?有什么想法吗?
谢谢:-)

在今天的托管环境中,修改几乎是必不可少的。但不幸的是,并不是每个人都明白这一点

很多大型php程序(我想是magento,但大多数都能应付)在mod_rewrite不可用时有一个非常好的url回退模式

URL最终看起来像www.site.com/index.php?加载此页面

他们必须运行一些魔术,从$\u GET变量中获取变量名,并将其用作要执行的模块/功能的选择器


在一篇相关的文章中,我在新的facebook网站上看到了很多乱七八糟的URL,它使用的是#。因此链接看起来像www.new.facebook.com/home.php#/inbox/显然我们不想看到这一点,但它表明它们可能正在解析$_服务器['REQUEST_URI']变量。

Zend framework应该在没有
mod_rewrite
的情况下工作。如果你可以使用你的URL:s,它看起来更像“/path/to/app/index.php/controller/action”。如果您有mod_rewrite,您可以去掉“index.php”位,但它也应该可以使用


只需设置接受index.php部分的路由即可。

如果您可以找到一种非mod_重写方式将所有请求重定向到index.php(或无论您的初始化脚本在哪里),您可以,如上所述,使用'REQUEST_URI'获取域后的地址部分,然后根据需要解析它,并使请求执行您希望的操作。Wordpress就是这样做的(当然,需要修改)。只要您可以将请求重定向到索引页,同时保留相同的URI,您就可以执行处理请求所需的操作。

好的,我的结论:-):我已经成功使用了zend,没有修改,正如您所说的site/index.php/controller/action。我在发布这个之前就知道了。我还发现了一种在网络上“推送”404页到index.php的技术,因此非资源(如CSS、图像等)会到达那里,但有一个例外:POST值。 因此,我决定下次在特定服务器上创建应用程序时,礼貌地要求重写mod_。如果管理员无法提供,请与我的上司联系,如果是我,请更换供应商。
一般来说,PHP市场如此分散(php4、php5、php6、mod_重写、mod_auth、mod_等等)有时是令人遗憾的,但这是另一回事……

Drupal的重写规则

进入

…并具有决定生成哪种风格的URL的逻辑。如果你能忍受丑陋的URL,这将让你保持一个前端控制器的所有逻辑,而不依赖URL重写