好的,所以我刚刚安装了最新版本的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}.
答案 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>