Route在调试列表中,但在Symfony 4

时间:2018-01-31 14:40:43

标签: symfony4 symfony-routing

好的,所以我刚刚安装了最新版本的Symfony 4.安装完成后运行浏览器并显示一个不错的欢迎问候语。一切都好!

然后我使用make:controller创建了一个新控制器。我将此控制器命名为Client,并使用Annotations,与其他默认控制器相同。我按如下方式配置了路由:

/**
 * @Route("/client", name="client")
 */
public function index()
{
    // replace this line with your own code!
    return $this->render('@Maker/demoPage.html.twig', [ 'path' => str_replace($this->getParameter('kernel.project_dir').'/', '', __FILE__) ]);
}

我刷新浏览器并且一切都很好,没有错误。

然后我手动将路径输入浏览器以检查它是否真的有效:

localhost:8000/client

问题。该网址返回标准apache 404

Not Found
The requested URL /client was not found on this server.

Apache/2.4.18 (Ubuntu) Server at new.staff-fdr.dev Port 80

调试路径虽然看到了这一点:

-------------------------- -------- -------- ------ ------------------
  Name                       Method   Scheme   Host   Path   

 -------------------------- -------- -------- ------ -----------------
  client                     ANY      ANY      ANY    /client  
  index                      ANY      ANY      ANY    /       
  _twig_error_test           ANY      ANY      ANY    /_error/{code}.

3 个答案:

答案 0 :(得分:21)

缺少.htaccess个文件。

composer config extra.symfony.allow-contrib true

composer req symfony/apache-pack

答案 1 :(得分:2)

我也有这个问题,如果这对你不起作用,还有其他一些想法。一种是配置您的Web服务器,如此处所述。使用mod_php的优化apache为我工作:

https://symfony.com/doc/master/setup/web_server_configuration.html

其次,我的网络服务器上没有启用mod重写。这最终是解决了我的问题。运行:

  

sudo a2enmod重写

然后

  

sudo service apache2 restart

这应该让你去。

答案 2 :(得分:0)

就我而言,我只是忘了在迁移到symfony flex时将我的虚拟主机配置从Web更改为公用文件夹。

<VirtualHost *:80>
    ServerAdmin webmaster@localhost.com
    DocumentRoot "C:/xampp/htdocs/myproject/web/"
    ServerName dev.myproject.com
    ServerAlias dev.myproject.com
    <Directory "C:/xampp/htdocs/myproject/web/">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Require all granted
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

TO

<VirtualHost *:80>
    ServerAdmin webmaster@localhost.com
    DocumentRoot "C:/xampp/htdocs/myproject/public/"
    ServerName dev.myproject.com
    ServerAlias dev.myproject.com
    <Directory "C:/xampp/htdocs/myproject/public/">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Require all granted
        Order allow,deny
        Allow from all
     </Directory>
</VirtualHost>