2017-01-09 67 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 这为我解决了问题。

好运