我在/var/www/html/zend_example
下安装了默认的Zend Framework应用程序。公共目录是:/var/www/html/zend_example/public
。
我在/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下)。
现在,所有请求都会重定向(或重写?)到基本网址(http:// MYDOMAIN)。
谢谢!
编辑#1
我为zend_example
和other_site
编辑了vhost,因此每个DocumentRoot
都设置为/var/www/html
,而不是每个网站的子目录。这样就可以访问各自网址中的两个网站 - other_site:http://MYDOMAIN/other_site
和zend_example:http://MYDOMAIN/zend_example/public
。现在,我认为.htaccess
目录中的/var/www/html/zend_example/public
文件存在问题。我无法访问应该指向IndexController的默认“Zend”URL,例如http://MYDOMAIN/zend_example/public/index/index
。相反,我收到了404
错误。
编辑#2
如果我禁用除zend_example
之外的所有vhost,并且zend_example vhost设置了DocumentRoot /var/www/html
,那么我可以在http://MYDOMAIN/zend_example/public
下运行Zend站点,包括特定的默认Zend路线,例如http://MYDOMAIN/zend_example/public/index/index
。当我启用另一个vhost时,这会中断,尽管我仍然可以在http://MYDOMAIN/zend_example/public
访问Zend的主索引页。
编辑#3
我最终玩弄了几个小时。由于我的服务器 centos 6.0 ,似乎需要完成一些独特的配置。我最终设置了Debian 6.0服务器并且能够正确设置我的虚拟主机,包括Zend站点!不过,我仍然想回来解决这个问题。
答案 0 :(得分:1)
您错过了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>
我不是* nix用户,因此我不确定您是否更改了类似于Windows主机文件的任何内容,但可能需要进行调查。 (看起来您必须编辑hosts文件,它应该在/etc/hosts
添加一行,如127.0.0.1 zend.example
,其中zend.example =来自您的vhost的ServerName)
P.S。如果你需要localhost,你可能必须为localhost创建一个vhost(作为列表中的第一个,如果你的所有vhost都在一个文件中)。我知道我必须在Windows上这样做。