【问题标题】:Route is in debug list but returns 404 in Symfony 4路由在调试列表中,但在 Symfony 4 中返回 404
【发布时间】:2018-07-10 17:13:36
【问题描述】:

好的,所以我刚刚安装了最新版本的 Symfony 4。安装后运行浏览器并显示一个漂亮的欢迎问候语。一切顺利!

然后我使用make:controller 创建了一个新控制器。我将此控制器命名为客户端并使用注释,与其他默认控制器相同。我配置路由如下:

/**
 * @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

问题。 url 返回标准 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}.

【问题讨论】:

  • 缺少 htaccess。

标签: symfony4 symfony-routing


【解决方案1】:

缺少.htaccess 文件。

composer config extra.symfony.allow-contrib true

composer req symfony/apache-pack

【讨论】:

  • 这解决了我的问题,我只做了 composer req symfony/apache-pack
【解决方案2】:

我也遇到了这个问题,如果这不适合你,这里还有一些其他的想法。一种是按照此处记录的方式配置您的 Web 服务器。使用 mod_php 优化的 apache 对我有用:

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

其次,我的网络服务器上没有启用 mod 重写。这最终是让我振作起来的解决方案。运行:

sudo a2enmod 重写

然后

sudo service apache2 重启

这应该会让你继续前进。

【讨论】:

  • 在 2 个不同的项目中遇到了同样的问题,并且不知道原因。这是解决方案,非常感谢!
【解决方案3】:

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

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

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

【讨论】:

    猜你喜欢
    • 2019-11-28
    • 2020-02-11
    • 2021-02-21
    • 1970-01-01
    • 2019-04-20
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多