2012-01-17 123 views
2

我在Ubuntu 11.10(我的本地開發機器)上使用Zend Framework。當我瀏覽到我的應用程序與此URL,頭版/指數控制器正常工作:Zend Framework給控制器404錯誤

http://localhost/myapp/public 

所以我知道,在大多數情況一切正常。問題是當我嘗試的東西,如訪問另一個控制器:「/ MyApp的/公/ FAQ在此服務器上找到請求的URL」

http://localhost/myapp/public/faq 

這將返回404錯誤

我用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

我想你不應該直接通過公共文件夾訪問url,你是如何設置虛擬主機的?公用文件夾中是.htaccess?是虛擬主機設置中的網站的'DocumentRoot'的公共文件夾? – jere 2012-01-17 18:23:56

+0

你的控制器文件夾是什麼樣的? – 2012-01-17 18:29:34

+0

@JamesButler這是一個由「zf create project myapp」創建的標準Zend Framework目錄, – 2012-01-17 18:36:02

回答

1

[解決]

感謝觀看,我最終找到解決方案。在Ubuntu中,在/ etc/apache2/sites-enabled /目錄中是一個名爲000-default的文件,其中包含配置選項。

我不知道它在那裏,它的所有AllowOverride選項設置爲None,所以我將它們更改爲All,重新啓動Apache,並且瞧!

sudo a2enmod rewrite 

即:

爲了確保任何人誰發現通過搜索這個問題已經完全幫助,我想傳遞以確保mod_rewrite並通過打開終端並運行啓用(我的是)如何在Ubuntu中啓用Apache mod。