Route is in debug list but returns 404 in Symfony 4

删除回忆录丶 提交于 2019-12-10 12:45:45

问题


Ok, so I just installed latest version Symfony 4. Run the browser after installation and a nice welcome greeting shows. All good!

Then I created a new controller using make:controller. I named this controller Client and is using Annotations, same with the other Default Controller. I configured the routing as follows:

/**
 * @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__) ]);
}

I refreshed the browser and all good, no errors.

Then I manually typed the path into the browser to check if it's really working:

localhost:8000/client

Problem. The url returned standard 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

The debug route sees this though:

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

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

回答1:


Missing .htaccess file.

composer config extra.symfony.allow-contrib true

composer req symfony/apache-pack



回答2:


I also had this issue and here are a couple of other ideas if this isn't working for you. One is to configure your web server as documented here. The optimized apache with mod_php worked for me:

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

Second, I didn't have mod rewrite enabled on my web server. This was ultimately the fix that got me up and going. Run:

sudo a2enmod rewrite

Then

sudo service apache2 restart

That should get you going.




回答3:


In my case, I simply had forgotten to change my vhost configuration from the web to public folder when migrating to symfony flex.

<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>


来源:https://stackoverflow.com/questions/48544786/route-is-in-debug-list-but-returns-404-in-symfony-4

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!