在Ubuntu 13.10上使用Apache虚拟主机安装zf2

7

我正在Ubuntu 13.10上配置Zend应用程序(ZF2)。按照以下步骤:

  1. 将代码放置在名为zfapp/var/www/目录下。

虚拟主机配置:

 <VirtualHost *:80> 
  ServerName zfapp.com DocumentRoot /var/www/zfapp/ 

  <Directory /> 
    Options FollowSymLinks 
    AllowOverride All 
  </Directory> 

  ErrorLog /var/log/apache2/error.log 

   # Possible values include: debug, info, notice, warn, error, crit, 
   # alert, emerg. 
   LogLevel warn 
   CustomLog /var/log/apache2/access.log combined 

</VirtualHost>
  1. /etc/hosts中创建虚拟主机

    127.0.0.1 zfapp.com

  2. /etc/apache2/sites-available/zfapp.cof中添加文件

  3. sudo a2enmod rewrite

  4. sudo a2ensite zfapp.conf

  5. sudo service apache2 restart

然而当我浏览网站(zfapp.com/api/user/auth)时,出现以下错误:

未找到 找不到请求的URL /api/user/auth 在该服务器上

我有一个Javascript MVC项目,使用PHP作为服务器端语言。

以下是项目目录结构:

ProjectDir javascriptMVC文件夹-> models/controllers js文件 api文件夹-> Zend项目

我已经在javascriptMVC目录中建立了指向api/public的符号链接api,用于在AJAX调用PHP服务器时使用,例如/api/user/auth。这个相同的结构在旧的Ubuntu机器上运行正常。

我认为这与Apache配置有关;或者我需要设置任何别名吗?


1
你能只访问 zfapp.com 吗? - Bilal
1
展示你的路由配置。 - Bilal
路由?你是指/etc/hosts吗? - Abdul Rauf
我在/etc/apache2/sites-available/zfapp.conf文件中有以下内容:<VirtualHost *:80> ServerName zfapp.com DocumentRoot /var/www/zfapp/ <Directory /> Options FollowSymLinks AllowOverride All ErrorLog /var/log/apache2/error.log # 可能的值包括:debug、info、notice、warn、error、crit、alert、emerg。 LogLevel warn CustomLog /var/log/apache2/access.log combined</VirtualHost> - Abdul Rauf
3个回答

10

谢谢大家,

我已经找到了问题所在。

在Apache 2.4.6和Ubuntu 13.10中,我们需要更新apache2.conf文件,将其中的内容更改为:

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>
<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

并创建您的虚拟主机文件,例如:

<VirtualHost zfapp.com:80>
    ServerName zfapp.com

    DocumentRoot /var/www/zfapp/index

    <Directory /var/www/zfapp/index>
                Options Indexes FollowSymLinks
                AllowOverride All
                Require all granted
        </Directory>

    ErrorLog /var/log/apache2/error.log
    CustomLog /var/log/apache2/access.log combined
</VirtualHost>

我从这里找到了解决方案: https://askubuntu.com/questions/423514/how-to-enable-mod-rewrite-for-virtual-host

顺便说一下,感谢 @Bilal 和 @jmleroux。


如果您仍然遇到500错误,就像我一样,请尝试启用模块重写:sudo a2enmod rewrite。 - Piotr Uchman

2

没有代码,很难诊断问题...

也许是URL重写的问题:

你启用了mod_rewrite吗?

你设置了AllowOverride All吗?


是的,它启用了,使用命令(sudo a2enmod rewrite)。 - Abdul Rauf
也许是新的Apache:13.10版本附带了Apache 2.4。您需要使用“Require all granted”。 - jmleroux
2
没有代码很难诊断。然后不要;这不是一个答案;而是应该作为评论的两个问题。 - AlexP

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接