如何将 URL 重定向到 symfony project/environment?

How to redirect urls to the symfony project/environment?

我正在学习 Symfony 教程,但 localhost 上的 url 与教程中的 url 不匹配,所以我猜我一定是错过了什么?例如,一个教程处理对以下请求的请求:

localhost/hello/fabien

然而,我得到了 Not Found. The requested URL /hello/Fabien was not found on this server。如果我使用:

,我只会得到正确的结果

localhost/app_dev.php/hello/fabien

mod_rewrite

创建一个包含以下内容的简单 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 只会在 devtest 环境中加载。

还要确保在 routing.yml 而不是 routing_dev.yml 中导入路由。

产品日志

检查 app/logs/prod.log 的底部是否有错误。

.htaccess/路由/产品缓存

查看 .htaccess 文件,它将 /hello/fabien 之类的请求重定向到 /app.php/hello/fabien。那应该启动 prod 环境。然而,出于性能原因,prod 环境缓存了大多数文件(例如 yml 和 twig 文件)并从缓存中提供它们。

这意味着您需要在 adding/changing 路由之后清除 prod 缓存。

勾选app/console router:debug --env=prod

正在清除缓存

您可以在控制台上执行 app/console cache:clear --env=prod 或删除文件夹 app/cache/prod。