Apache 是否将Zend Framework配置为忽略其他目录并在子目录中工作?

Apache 是否将Zend Framework配置为忽略其他目录并在子目录中工作?,apache,zend-framework,mod-rewrite,Apache,Zend Framework,Mod Rewrite,我在/var/www/html/Zend_example下安装了一个默认的Zend Framework应用程序。公共目录是:/var/www/html/zend\u example/public 我在/var/www/html中还有其他非zend站点。例如,/var/www/html/other\u站点 如何将ZF站点配置为在http://MYDOMAIN/zend_example同时允许http://MYDOMAIN/other_site要工作吗 这是我的apache配置文件: <Vir

我在
/var/www/html/Zend_example
下安装了一个默认的Zend Framework应用程序。公共目录是:
/var/www/html/zend\u example/public

我在
/var/www/html
中还有其他非zend站点。例如,
/var/www/html/other\u站点

如何将ZF站点配置为在
http://MYDOMAIN/zend_example
同时允许
http://MYDOMAIN/other_site
要工作吗

这是我的apache配置文件:

<VirtualHost *:80>
    DocumentRoot /var/www/html/zend_example/public
    SetEnv APPLICATION_ENV "development"
    <Directory /var/www/html/zend_example/public>
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>
我只想让一个开发ZF站点启动并运行,同时还可以使用其他站点(在相同的基本URL下)

现在,所有请求都重定向(或重写?)到基本URL(http://MYDOMAIN)

谢谢

编辑#1

我编辑了
zend_示例
other_站点
的vhost,以便将每个
DocumentRoot
设置为
/var/www/html
,而不是每个站点的子目录。这样就可以在各自的URL中访问这两个站点-其他站点:
http://MYDOMAIN/other_site
和zend\u示例:
http://MYDOMAIN/zend_example/public
。现在,我认为
/var/www/html/zend\u example/public
目录中的
.htaccess
文件有问题。我无法访问默认的“Zend”URL,例如
http://MYDOMAIN/zend_example/public/index/index
它应该指向IndexController。相反,我收到了一个
404
错误

编辑#2

如果我禁用了除
zend_示例
one之外的所有vhost,并且zend_示例vhost设置了
DocumentRoot/var/www/html
,那么我就能够在
http://MYDOMAIN/zend_example/public
,包括特定的默认Zend路由,例如
http://MYDOMAIN/zend_example/public/index/index
。当我启用另一个vhost时,这会中断,尽管我仍然能够在
http://MYDOMAIN/zend_example/public

编辑#3


最后我玩了几个小时。似乎有一些独特的配置需要完成,因为我的服务器是centos 6.0。我最终安装了Debian 6.0服务器,并且能够正确安装虚拟主机,包括Zend站点!不过,我还是想回来在centos上解决这个问题。

您的vhost中缺少了
ServerName
选项。此外,如果目录声明中不允许
followSymlinks
,您可能会遇到一些困难,请尝试以下操作:

//the ServerName is the name that would follow http:// (http://zend.example/module/controller/action)

<VirtualHost *:80>
    DocumentRoot /var/www/html/zend_example/public
    ServerName zend.example
    SetEnv APPLICATION_ENV "development"
    <Directory /var/www/html/zend_example/public>
        DirectoryIndex index.php
        Options Indexes FollowSymlinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>
//服务器名是http://后面的名称(http://zend.example/module/controller/action)
DocumentRoot/var/www/html/zend_example/public
ServerName zend.example
SetEnv应用程序_ENV“开发”
DirectoryIndex.php
选项索引跟随符号链接
允许超越所有
命令允许,拒绝
通融
我不是*nix用户,所以我不确定您是否更改了类似windows主机文件的内容,但这可能需要调查。(看起来您必须编辑主机文件,它应该位于
/etc/hosts
添加一行,如
127.0.0.1 zend.example
其中zend.example=vhost中的ServerName)


另外,如果您需要localhost可用,您可能需要为localhost创建一个vhost(如果所有vhost都在一个文件中,则作为列表中的第一个vhost)。我知道我必须在windows上执行此操作。

该设置对我来说非常合适。它不起作用吗?如果你还没有,我唯一想补充的是另一个的VHost_site@vascowhiteZend站点本身正在运行,只是它只在
http://MYDOMAIN/
,而不是
http://MYDOMAIN/zend_example
。它还可以阻止URL,例如
http://MYDOMAN/other_site/
防止被访问(只是通过Zend应用程序错误)。如果这在Debian而不是Centos上起作用,则问题可能与某些文件或目录的所有权/权限有关。我以前在安装ubuntu时遇到过这种情况。服务器名对我来说是一种困惑。我在一个远程服务器上工作,我没有连接域名,所以我只是通过IP访问它。据我所知,如果我为Zend应用程序设置localhost vhost和ServerName,它仍然必须通过IP(而不是服务器名)访问。这有意义吗?我添加了您建议的
FollowSymlinks
规则,并为其他网站创建了vhost。我选中了
/etc/hosts
,它已经有一个localhost行了。我现在正在浏览
httpd.conf
以了解其他想法。可能需要注意的是,无论哪个vhost include首先在
httpd.conf
中列出,那么第一个vhost include就会出现在
http://MYDOMAIN/
第二个无法访问。这就像是忽略了
DocumentRoot
。这个站点是远程的,这会造成一些不同。现在您需要一个适当的vhost和一种处理dns条目的方法。如果远程设备在本地网络上,您可以使用每个客户端计算机上的主机文件路由到站点(或在服务器计算机上设置dns服务器),如果远程设备不在本地网络上,则您正在开放internet上处理dns。我在尝试通过ip访问ZF站点时遇到过很多问题,有一个技巧我不知道。
//the ServerName is the name that would follow http:// (http://zend.example/module/controller/action)

<VirtualHost *:80>
    DocumentRoot /var/www/html/zend_example/public
    ServerName zend.example
    SetEnv APPLICATION_ENV "development"
    <Directory /var/www/html/zend_example/public>
        DirectoryIndex index.php
        Options Indexes FollowSymlinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>