如何将 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 只会在 dev 和 test 环境中加载。
还要确保在 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。
我正在学习 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 只会在 dev 和 test 环境中加载。
还要确保在 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。