路由在调试列表中,但在 Symfony 4 中返回 404
Posted
技术标签:
【中文标题】路由在调试列表中,但在 Symfony 4 中返回 404【英文标题】:Route is in debug list but returns 404 in Symfony 4 【发布时间】: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。 【参考方案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>
【讨论】:
以上是关于路由在调试列表中,但在 Symfony 4 中返回 404的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Symfony Routing 作为独立组件来调试路由?