我有/var/www/html/zend_example
下安装了默认的Zend Framework应用程序。公共目录是:/var/www/html/zend_example/public
。配置Zend Framework忽略其他目录并在子目录中工作?
我也有/var/www/html
其他非Zend的部位。例如,/var/www/html/other_site
。
如何配置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>
这里是.htaccess
文件中/var/www/html/zend_example/public
:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
我只是想获得一个发展ZF网站建立和运行,同时还具有其他的可用的网站(在相同的基本URL下)。
眼下,所有的请求重定向(或重写?)到基URL(HTTP:// MYDOMAIN)。
谢谢!
编辑#1
我编辑的虚拟主机两个zend_example
和other_site
使每个DocumentRoot
设置为/var/www/html
,而不是子目录为每个站点。这使得它可以访问这两个网站在各自的网址 - OTHER_SITE:http://MYDOMAIN/other_site
和zend_example:http://MYDOMAIN/zend_example/public
。现在,我认为/var/www/html/zend_example/public
目录中的.htaccess
文件存在问题。我无法访问应该指向IndexController的默认“Zend”URL,如http://MYDOMAIN/zend_example/public/index/index
。相反,我收到一个404
错误。
编辑#2
如果我禁用除了zend_example
一个所有虚拟主机和zend_example虚拟主机有DocumentRoot /var/www/html
集,然后我能够http://MYDOMAIN/zend_example/public
下运行的Zend的网站,其中包括特定的默认Zend的路线,如http://MYDOMAIN/zend_example/public/index/index
。当我启用另一个虚拟主机时,这会中断,但我仍然可以访问Zend的主索引页面http://MYDOMAIN/zend_example/public
。
编辑#3
我结束了这个酝酿了好几个小时。似乎有一些独特的配置需要完成,因为我的服务器是centos 6.0。我最终设置了Debian 6.0服务器,并能够正确地设置我的虚拟主机,包括Zend站点!不过,我仍然想回来解决centos问题。
该设置看起来对我来说很合适。它不工作?我唯一要补充的是,如果你还没有成为其他站点的VHost – vascowhite 2012-04-21 07:26:40
@vascowhite Zend站点正在工作,除了它只能在'http:// MYDOMAIN /'而不是'http: // MYDOMAIN/zend_example'。它还可以防止访问诸如“http:// MYDOMAN/other_site /”之类的URL(它只是通过Zend应用程序错误)。 – 2012-04-21 20:28:20
如果这适用于Debian而不是Centos,则问题可能在于某些文件或目录的所有权/权限。我在尝试设置Ubuntu时遇到过这个问题。 – RockyFord 2012-04-22 06:28:12