2017-01-09 63 views
1

我下面這個教程設置我的第一頁中的Symfony 3項目:Joyful Development with Symfony 3 TutorialSymfony3 - 未找到路線「GET /家」

/src/AppBundle/Controller/創建一個HomeController文件。這個文件的內容是:

<?php 

namespace AppBundle\Controller; 

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 
use Symfony\Component\HttpFoundation\Response; 

class HomeController { 

    /** 
    * @Route("/home") 
    */ 

    public function showAction() { 
     return new Response('Testing!'); 
    } 
} 

我只是試圖讓文字:「測試」從上面的showAction()功能來顯示。但是,我的頁面有錯誤:找不到「GET/home」的路由

上面的設置有問題嗎?對不起,如果這是一個簡單的問題,這是我第一次使用Symfony,我迷路了!

Symfony Error Message

+0

不知道什麼指南已儘量覆蓋,服務器設置得好,但你有適當的htaccess文件和服務器配置? – samrap

+0

@samrap感謝您的回覆。我的.htaccess文件是:' 要求都否認 訂單拒絕,允許 所有 ' – Liz

+0

拒絕這裏的[鏈接Nginx的配置( https://symfony.com/doc/current/setup/web_server_configuration.html#nginx) –

回答

3

如果你是在本地主機上測試,你可以到你的項目目錄,並使用內置的Web服務器來測試項目:

php bin/console server:start 

,並阻止它:

php bin/console server:stop 

要調試路由,請輸入:

php bin/console debug:router 

這應顯示您的所有路由。一旦這個工作,這是一個讓你的Nginx工作的問題。

您還可以爲內置服務器指定不同的IP地址。請參閱文檔: http://symfony.com/doc/current/setup/built_in_web_server.html#starting-the-web-server

2

根據您htaccess文件,我的猜測是,你不必在你的htaccess文件正確的重寫。從一個非常高的層次來看,路由的工作方式是你總是碰到同一個文件,代碼解析URL並調用正確的路由。爲了這個工作,你需要告訴你的服務器如何去做。

首先,請參閱Configuring a Web Server以確保您的服務器配置正確。

然後,嘗試在你的.htaccess文件中添加此:

<IfModule mod_rewrite.c> 
    Options +FollowSymlinks 
    RewriteEngine On 

    # Explicitly disable rewriting for front controllers 
    RewriteRule ^app_dev.php - [L] 
    RewriteRule ^app.php - [L] 

    RewriteCond %{REQUEST_FILENAME} !-f 

    # Change below before deploying to production 
    #RewriteRule ^(.*)$ /app.php [QSA,L] 
    RewriteRule ^(.*)$ /app_dev.php [QSA,L] 
</IfModule> 

這應該可以解決您的問題。如果沒有,看看this Gist

聲明:我沒有用Symfony框架直接工作直接,我主要工作在構建在Symfony之上的Laravel。我玩過Symfony組件,但從未在Symfony中構建完整的項目。您可能需要稍微調整一下我發佈的示例中的htaccess配置,但至少應該讓您指出正確的方向。

+0

對不起,如果這是一個愚蠢的問題。我正在使用Nginx服務器。在什麼目錄下,我應該把Nginx配置代碼放在我的應用程序中以使其正常工作? – Liz

+0

好問題,我不熟悉nginx:/這對你沒有幫助:http://symfony.com/doc/current/setup/web_server_configuration.html#nginx?至於htaccess文件,無論如何它應該被放置在你的項目的公共'web'目錄中。 – samrap

+1

絕對有幫助,只是不知道要把它放在哪個目錄以及要調用它。無論如何感謝您的幫助! – Liz

0

您是否啓用了文件app/config/routing.yml中的路由?需要將路由導入爲與任何其他路由資源一樣處於活動狀態。

# app/config/routing.yml 

# import routes from a controller class 
home: 
    resource: "@AppBundle/Controller/HomeController.php" 
    type:  annotation 

More info

0

你嘗試過打開,然後再次關閉?看到。IT人羣

在某些情況下,新路由尚未添加到緩存中,因此請嘗試刪除project_name/var/cache中的項目緩存,然後重新啓動服務器php bin/console服務器:run 這爲我解決了問題。

好運

相關問題