如何将URL重定向到symfony项目/环境?

时间:2015-01-06 14:06:05

标签: symfony controller

我正在通过Symfony教程工作,而localhost上的网址与教程中的网址不符,所以我猜我一定错过了什么?例如,一个教程处理请求:

localhost/hello/fabien

但是,我得到Not Found. The requested URL /hello/Fabien was not found on this server。如果我使用的话,我只得到正确的结果:

localhost/app_dev.php/hello/fabien

1 个答案:

答案 0 :(得分:0)

的mod_rewrite

使用以下内容创建一个简单的php文件:

<?php phpinfo(); ?>

在php信息页面上搜索mod_rewrite,如果它没有提供任何内容,请在服务器上发出以下命令:

sudo a2enmod rewrite

sudo /etc/init.d/apache2 restart

Dev Bundles

请检查您的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

中导入路线

prod log

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

.htaccess / Routing / prod cache

查看 .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。