在子文件夹中使用Drupal(或任何其他CMS)的Zend Framework站点)

时间:2010-11-24 21:16:43

标签: php zend-framework drupal .htaccess mod-rewrite

我正在构建基于Zend Framework的网站/应用程序。对于大量页面,我想使用Drupal。 Drupal可能安装在/ cms文件夹中。

Zend Framework入口点是

  

/public/index.php

而Drupal是

  

/public/cms/index.php

如何使用一些 .htaccess mod_rewrite 规则来删除Drupal的URL的“/ cms /”部分,也就是说,我想要链接到页面

  

www.example.com/blog/a-blog-post

而不是

  

www.example.com/cms/blog/a-blog-post

另外,我希望Zend Framework的自定义路由能够正常工作。

子问题:谁将提供404未找到的页面,Zend Framework应用程序或Drupal?

2 个答案:

答案 0 :(得分:0)

不确定Drupal如何处理它的根主机名,但是使用Zend Framework中的默认mod_rewrite规则,作为文件夹存在的公共路径中的任何内容都将覆盖ZF路由。

所以我猜你是否在public/blog中安装了Drupal,你可以找到www.example.com/blog/a-post-name并且它会击中Drupal。至少这就是我在将Wordpress与ZF结合使用时所做的事情。

将根据遇到错误时正在运行的应用程序呈现错误页面。

答案 1 :(得分:0)

只要你的drupal网址都是'/ blog',只要在zend框架重写规则之前解释它就足够了,只需要一个重写规则。

我只是从头顶拉这个,所以我希望它有效:

RewriteEngine On
RewriteBase /blog
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /cms/index.php [L]

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

重要的[L]告诉apache它是最后一条规则,不应该更进一步。这个工作,但可能需要一些按摩。;)

要回答您的问题,404将被两者抛弃。在/ blog中找不到的任何东西都是drupal,其他任何未找到的东西都是ZF。