2012-12-06 97 views
0

我是Zend新手,嘗試創建我的第一個Zend應用程序。我用zf.sh來創建我的項目。我沒有改動任何東西,只是在默認的IndexController.php中修改indexAction方法,將一些數據分配給視圖。基本Zend應用程序 - URL路由不正確

我轉到URL mydomain/myapp /併成功加載視圖。但是,我去mydomain/myapp /索引,我找不到頁面。我在IndexController.php中創建了另一個名爲testAction的方法。我試着去通過mydomain/myapp/index/test,並且我也找不到一個頁面。

由於我離開了所有的配置(由zf.sh生成),我認爲這一切都應該開箱即用,所以我不確定出了什麼問題。

+0

我假設你使用的是Zend Framework 1.你使用的是什麼Web服務器? Apache的?什麼OS? –

+0

對不起,我應該早些說明 - 我在Linux服務器上使用ZF1.8,Apache 2.2。 – ttngo

+0

你可以發佈你用於這個動作的代碼嗎? – Lando

回答

0

聽起來這可能是您的新項目的虛擬主機設置的問題。

有關creating a virtual host的快速入門中有一些信息。需要注意的重要事項是Document RootDirectory部分應具有相同的路徑,該路徑指向項目的public文件夾。 AllowOverride All指令也很重要,因爲它允許public目錄中的.htaccess文件設置重寫規則。

如果您使用zf.sh來創建您的項目,那麼您應該在docs目錄中看到一個名爲README.txt的文件。這個文件將包含一些文本,以及一個示例虛擬主機配置 - 它應該已經包含正確的配置來啓動。您可以簡單地將該文件中的<VirtualHost>...</VirtualHost>部分剪切並粘貼到虛擬文件中(您需要爲您的特定操作系統制定正確的方法),它應該按原樣運行。

有一件事我似乎記得Ubuntu的是,在sites-available目錄文件應在.conf或他們不會解析(因人而異)不結束。您還必須記得啓用虛擬主機(Ubuntu的sudo a2ensite <The name of your vhost>)並重新加載apache配置(Ubuntu的sudo apache2 reload)。

另請注意,zf.sh將在您的項目的public目錄中創建一個.htaccess文件。你不需要碰這個文件,但確保它在那裏。它包含重寫規則,告訴apache通過index.php發送您的應用程序的所有請求以進行路由。

希望這會有所幫助。

+0

盧克米爾斯感謝您的回答。我按照建議設置了虛擬主機,但它仍然無法正常工作。我現在可以通過URL訪問默認控制器及其動作:mydomain/index,mydomain/index/index和mydomain/index/test(所以我比以前好一點)。但是,當我創建一個名爲TestController的新控制器時,我得到一個未找到的頁面(由生成的ErrorController.php顯示)。由於之前的錯誤控制器沒有處理錯誤,所以還比以前進一步。這也可能與apache配置有關嗎? – ttngo

+0

聽起來這是一個無關的問題。最好開始一個提供新問題的具體細節的新問題,幷包含TestController代碼的副本。 –

+0

D'oh。原來在我的新控制器上沒有正確設置權限,並且apache無法訪問它。謝謝你的幫助。這個答案解決了我的原始問題。 – ttngo