无法访问我的Symfony控制器@Route

时间:2018-06-29 20:15:22

标签: php macos symfony xampp

我是Symfony的新手(使用3.4版)。我在macOS High Sierra上将它与XAMPP一起使用。我将我的虚拟主机设置为:

<VirtualHost *:80>
   DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/project/web/app_dev.php"
   ServerName project
</VirtualHost>

然后用“ 127.0.0.1 project”设置我的主机文件,一切正常。

但是在我的应用程序中,我创建了一个控制器:

<?php

namespace AppBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;

class ProjectController extends Controller
{ 
    /**
    * @Route("/todo", name="todo_list")
    */
    public function indexAction(Request $request)
    {
        die("TO DOS");
        // replace this example code with whatever you need
        return $this->render('default/index.html.twig', [
            'base_dir' => realpath($this- 
            >getParameter('kernel.project_dir')).DIRECTORY_SEPARATOR,
         ]);
    }
}

但是当我访问项目/待办事项时,它将重定向到项目/仪表板并显示XAMPP欢迎页面。我如何去项目/待办事项?

注意:尽管我使用的是Mac,但我正在做本教程https://www.youtube.com/watch?v=HchMW8EhWPU

2 个答案:

答案 0 :(得分:2)

我在Apache + Symfony方面的经验有限,但是我相信您的DocumentRoot是非法的。您应该指向web目录,而不要指向proddev前端控制器。出于测试目的,只需从最后删除app_dev.php。有帮助吗?

根据您的版本,请始终参考官方文档,例如: Configuring a Web Server

为了调试您的路线,建议您运行bin/console debug:router,以便更好地了解您注册的路线。

希望这会有所帮助...

答案 1 :(得分:1)

您的文档根目录不正确。文档根目录必须始终是目录。因此,您的文档根目录应该是:

DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/project/web/"

下一步:您想要的是所有请求都通过app_dev.php。这是通过重写规则完成的。重写规则将客户的请求映射到实际资源(在您的情况下为app_dev.php前端控制器。

这是一组适用于您的重写规则。 (我目前未使用Apache,所以我从一个旧项目中挖掘了它们,希望它们对您有用。) 将其放入.htaccess目录的web/文件中:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ app_dev.php [QSA,L]
</IfModule>

这是一组基本规则,基本上意味着网络服务器应将对不存在文件的所有请求重写为app_dev.php

您也可以将其添加到Web服务器配置中,但是每次修改配置时,都必须重新启动Web服务器。

也:如果由于某种原因在修改配置后出现5xx错误,请查看服务器日志以获取解释。