在apache上设置虚拟主机以允许Zend在与另一个应用程序/静态网站相同的域上

时间:2012-05-13 17:56:25

标签: php apache zend-framework redirect virtualhost

目标是在与静态网站相同的域上有效地设置Zend应用程序。目前以下情况属实但很慢:

  • www.website.com/重定向到www.website.com/corp/index.html
  • / admin,/ login,/ session解析为zend应用程序所在的/index.php

我已在我的bootstrap文件中设置重定向到www.website.com/corp/index.html,但无论我访问哪个页面,此重定向都必须在适当的时候发生。它正在减慢整个静态站点的速度。这是我的虚拟主机httpd.conf条目,它将所有内容重定向到/index.php,但是我想放置一个异常,允许在进入该目录后访问没有重定向的/ corp。其他简单有效的解决方案当然也很受欢迎。

<VirtualHost *:18887>
   DocumentRoot c:\pathtoapp\public
   ServerName website.com

    SetEnv APPLICATION_ENV "local"
     <Directory c:\pathtoapp\public>
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

1 个答案:

答案 0 :(得分:1)

如果您修改Zend Framework的.htaccess文件以绕过向前端控制器发送任何请求/corp/*,您应该可以绕过此问题。

尝试将公共目录中的.htaccess文件更改为:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} ^corp\/* [OR]
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

第一个RewriteCond检查请求文件名是否与/corp/*匹配,如果是,则绕过前端控制器并直接通过Apache提供请求,您的Zend应用程序永远不必处理任何这些请求。