我正在通过Symfony教程工作,而localhost上的网址与教程中的网址不符,所以我猜我一定错过了什么?例如,一个教程处理请求:
localhost/hello/fabien
但是,我得到Not Found. The requested URL /hello/Fabien was not found on this server
。如果我使用的话,我只得到正确的结果:
localhost/app_dev.php/hello/fabien
答案 0 :(得分:0)
使用以下内容创建一个简单的php文件:
<?php phpinfo(); ?>
在php信息页面上搜索mod_rewrite,如果它没有提供任何内容,请在服务器上发出以下命令:
sudo a2enmod rewrite
sudo /etc/init.d/apache2 restart
请检查您的app/AppKernel.php
并确保路径所在的捆绑包已加载到 prod 环境中。
如果你看到这个:
if (in_array($this->getEnvironment(), array('dev', 'test'))) {
$bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
$bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
$bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
$bundles[] = new Bundle\YourBundle\BundleYourBundle();
}
这意味着BundleYourBundle只会在 dev 和 test 环境中加载。
还要确保在routing.yml
而不是routing_dev.yml
检查app/logs/prod.log
的底部是否有错误。
查看 .htaccess 文件,它会将/hello/fabien
之类的请求重定向到/app.php/hello/fabien
。这应该会启动 prod 环境。然而, prod 环境会缓存大多数文件(例如yml和twig文件),并出于性能原因从缓存中提供这些文件。
这意味着您需要在添加/更改路线后清除 prod 缓存。
检查app/console router:debug --env=prod
您可以在控制台上执行app/console cache:clear --env=prod
或删除文件夹app / cache / prod。