Zend Framework为控制器提供404错误

时间:2012-01-17 18:18:59

标签: php apache zend-framework mod-rewrite

我在Ubuntu 11.10(我的本地开发机器)上使用Zend Framework。当我使用此URL导航到我的应用程序时,首页/索引控制器正常工作:

http://localhost/myapp/public

所以我知道大部分都是有效的。当我尝试使用以下内容访问另一个控制器时出现问题:

http://localhost/myapp/public/faq

这会返回404错误“在此服务器上找不到请求的URL / myapp / public / faq。”

我使用Zend_Tool创建控制器,如“zf create controller faq”,它为FaqController.php提供了一个默认的indexAction()。它还创建了faq.phtml视图。这一切都适用于我的笔记本电脑(Windows XP),所以我知道它必须是配置的东西。

这是我的.htaccess(这是默认的):

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

为了让它工作,我将其添加到我的httpd.conf文件中并重新启动了apache:

<Directory />
  Options FollowSymLinks
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory>

当这不起作用时,我尝试将其直接放入我的.htaccess文件中,但这也是不行的。我错过了什么?什么阻止了Zend能够重写和路由请求?

1 个答案:

答案 0 :(得分:1)

<强> [解决]

感谢您的观看,我最终找到了解决方案。对于Ubuntu,在/ etc / apache2 / sites-enabled /目录中是一个名为000-default的文件,其中包含配置选项。

我不知道它在那里,它将所有AllowOverride选项设置为None,所以我将它们更改为All,重新启动Apache,瞧!

为了确保通过搜索找到此问题的任何人都有完整的帮助,我想通过打开终端并运行来确保启用mod_rewrite(我的):

sudo a2enmod rewrite

这就是你如何在Ubuntu中启用Apache mod。