使用Zend Framework托管多个项目的Mod重写规则

时间:2011-07-07 10:00:01

标签: zend-framework .htaccess mod-rewrite

我想使用Zend Framework在单个虚拟主机上托管几个小项目。结构是:

    apps/
        testapp1/
          application/
          index.php,
        testapp2/
          application/
          index.php

虚拟主机中的文档根目录如下:DocumentRoot /var/www/apps/

我需要一个统一的mod_rewrite规则,它会将/apps/testapp1/xxx之类的网址转换为/apps/testapp1/index.php

我将非常感谢任何帮助,因为我试图解决这个问题几个小时。谢谢。

1 个答案:

答案 0 :(得分:1)

  1. 如果您的网站DocumentRoot为/var/www/apps/,那么我猜网址将是http://www.example.com/testapp1/ajax而不是http://www.example.com/apps/testapp1/ajax。如果是这样 - 那么您需要从这些规则中删除apps/部分。

  2. 这些规则需要放在 .htaccess 的网站根文件夹中。

  3. 如果你已经有了一些规则,那么这些新规则需要放在正确的位置,因为规则的顺序很重要

  4. 如果您还没有RewriteEngine On行,可能需要添加/apps/testapp1/ajax行。

  5. 此规则会将/apps/testapp1/index.php重写为RewriteRule ^apps/testapp1/ajax$ /apps/testapp1/index.php [NC,QSA,L] ,其他网址不会受到影响:

    /ajax

    此规则会将以/index.php结尾的所有网址重写为/apps/testapp1/ajax(例如/apps/testapp1/index.php => /apps/testapp2/ajax以及/apps/testapp2/index.php => { {1}}):

    RewriteRule ^(.+)/ajax$ /$1/index.php [NC,QSA,L]
    

    <强>更新

    此“通用”规则会将/apps/testapp1/xxx重写为/apps/testapp1/index.php以及/apps/testapp2/something =&gt; /apps/testapp2/index.php

    RewriteRule ^(.+)/([^/\.]+)$ /$1/index.php [NC,QSA,L]