我在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能够重写和路由请求?
答案 0 :(得分:1)
<强> [解决] 强>
感谢您的观看,我最终找到了解决方案。对于Ubuntu,在/ etc / apache2 / sites-enabled /目录中是一个名为000-default的文件,其中包含配置选项。
我不知道它在那里,它将所有AllowOverride选项设置为None,所以我将它们更改为All,重新启动Apache,瞧!
为了确保通过搜索找到此问题的任何人都有完整的帮助,我想通过打开终端并运行来确保启用mod_rewrite(我的):
sudo a2enmod rewrite
这就是你如何在Ubuntu中启用Apache mod。