php Zend / MVC没有mod_rewrite

时间:2008-08-17 16:06:04

标签: php model-view-controller zend-framework

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

5 个答案:

答案 0 :(得分:4)

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

设置接受index.php部分的路由都是一个问题。

答案 1 :(得分:1)

确定我的判决:-):我已经成功使用了没有mod_rewrite的zend,就像你们所说的site / index.php / controller / action一样。在发布之前我就知道了。我还在网上发现了一种将404页面“推送”到index.php的技术,因此不是资源(例如CSS,图像等)到达那里,只有一个例外:POST值。 所以我决定下次必须在特定服务器上创建一个应用程序时,礼貌地询问mod_rewrite。如果管理员无法提供,请与我的老板交谈,或者是否适合我,请切换提供商。 一般来说,有些时候PHP市场是如此多碎片(php4,php5,php6,mod_rewrite,mod_auth,mod_whatever)是一种耻辱,但这是另一个故事......

答案 2 :(得分:0)

mod_rewrite在今天的托管环境中几乎是必不可少的......但遗憾的是并非所有人都能收到消息。

很多大型的PHP程序(我正在考虑magento,但大多数都可以应对)在mod_rewrite不可用时有一个漂亮的url后退模式。

网址最终看起来像www.site.com/index.php?load-this-page

他们必须运行一些魔法才能从$ _GET变量中获取变量名称,并将其用作执行哪个模块/功能的选择器。

在相关的说明中,我在新的facebook网站上看到了很多混乱的网址,它们正在使用#。所以链接看起来像www.new.facebook.com/home.php#/inbox/显然我们不是要看到它,但它表明它们可能正在解析$ _SERVER ['REQUEST_URI']变量。

答案 3 :(得分:0)

如果您可以找到非mod_rewrite方法将所有请求重定向到index.php(或者您的init脚本所在的位置),您可以使用'REQUEST_URI'来获取域后的部分地址然后根据需要解析它并使请求按照您的意愿执行。这就是Wordpress的做法(使用mod_rewrite授予)。只要您可以将请求重定向到索引页面,同时保留相同的URI,您就可以执行处理请求所需的操作。

答案 4 :(得分:-2)

Drupal的重写规则转换

http://example.com/path/goes/here

http://example.com/index.php?q=path/goes/here

...并且有逻辑来决定要生成哪种URL。如果您可以使用丑陋的URL,这将使您可以保留单个前端控制器的所有逻辑,而不依赖于URL重写。