PHP Zend / MVC没有mod_rewrite
我已经在网络上的许多博客中看到了它的提法,但我认为应该在此处进行讨论。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
当我们在PHP中拥有MVC框架(我对ZEND感兴趣)但主机不提供mod_rewrite时,该怎么办?
是否有任何"捷径"?我们可以以任何方式转移控制权(以便在页面之间发生映射)吗?有任何想法吗?
谢谢 :-)
解决方案
回答
在当今的托管环境中,mod_rewrite几乎是必不可少的。.不幸的是,并非所有人都收到了消息。
当mod_rewrite不可用时,许多大型php程序(我在想magento,但大多数可以应付)都有漂亮的URL回退模式。
URL最终看起来像www.site.com/index.php?load-this-page
他们必须运行某种魔术才能从$ _GET变量中获取变量名,并将其用作要执行的模块/功能的选择器。
在相关说明中,我在使用#的新Facebook网站中看到很多混乱的URL。因此,链接看起来像www.new.facebook.com/home.php#/inbox/显然,我们并不是要看到它,而是表明它们可能是在解析$ _SERVER ['REQUEST_URI']变量。
回答
Zend框架应该可以在没有mod_rewrite的情况下工作。如果我们可以使用自己的URL:看起来更像是" /path/to/app/index.php/controller/action"。如果我们使用了mod_rewrite,则可以删除" index.php"位,但它也可以使用。
设置路由以接受index.php部分完全是问题。
回答
如果我们找到一种非mod_rewrite方式将所有请求重定向到index.php(或者init脚本所在的位置),则可以如上所述,使用'REQUEST_URI'来获取域之后的地址部分,然后进行解析我们可以根据自己的喜好进行处理,并根据要求进行处理。这就是Wordpress的操作方式(通过mod_rewrite授予)。只要我们可以在保留相同URI的情况下将请求重定向到索引页,就可以执行处理请求的操作。
回答
好吧,我的裁决:-):我已经成功使用了zend,而没有使用mod_rewrite,就像你们都说过site / index.php / controller / action一样。在发布之前,我知道这一点。我还在网上发现了一种将404页"推送"到index.php的技术,因此不是资源(例如CSS,图像等)的内容到达那里,除了一个例外:POST值。
因此,我决定下次必须在特定服务器上制作应用程序时,要礼貌地询问mod_rewrite。如果管理员无法提供,请与我的老板联系,或者如果是我的,请与服务提供商联系。
通常,有时PHP市场如此零散(php4,php5,php6,mod_rewrite,mod_auth,mod_whatever)非常可耻,但这是另一回事了……
回答
Drupal的重写规则翻译
http://example.com/path/goes/此处
进入
http://example.com/index.php?q=path/goes/此处
...并具有确定生成哪种URL的逻辑。如果我们可以使用丑陋的URL,这将使我们无需依赖URL重写就可以将单个前端控制器的所有逻辑保留在原位。