如何使用Apache路由器
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.7,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
如何使用Apache路由器
谨慎
使用Apache路由器不再被认为是一种好的实践.应用程序路由性能的小幅提升并不值得不断更新路由配置的麻烦。
Apache路由器将在Symfony 3中被移除,强烈建议不要在应用程序中ob娱乐下载使用它。
ob娱乐下载Symfony虽然快速开箱即用,但也提供了各种方法来通过一点点调整来提高速度。其中一种方法是让Apache直接处理路由,而不是使用Symfony来完成这项任务。ob娱乐下载
谨慎
Apache路由器在Symfony 2.5中已弃用,并将在Symob娱乐下载fony 3.0中被移除。由于路由器的PHP实现得到了改进,性能收益不再显著(尽管很难复制相同的行为)。
更改路由器配置参数
要转储Apache路由,您必须首先调整一些配置参数,以告诉Symfony使用ob娱乐下载ApacheUrlMatcher
而不是默认值:
- YAML
- XML
- PHP
1 2 3 4
# app / config / config_prod.yml参数:router.options.matcher.cache_class:~#禁用路由器缓存router.options.matcher_class:ob娱乐下载Symfony \组件\ \匹配器\ ApacheUrlMatcher路由
1 2 3 4 5
<!——app/config/config_prod.xml——> . txt<参数><参数关键=“router.options.matcher.cache_class”>零参数><!——disable router cache——> .使用实例<参数关键=“router.options.matcher_class”>ob娱乐下载Symfony \组件\ \匹配器\ ApacheUrlMatcher路由参数>参数>
1 2 3 4 5 6
/ / app / config / config_prod.php$容器->setParameter (“router.options.matcher.cache_class”,零);//禁用路由器缓存$容器->setParameter (“router.options.matcher_class”,“ob娱乐下载Symfony \组件\ \匹配器\ ApacheUrlMatcher路由的);
提示
请注意,ApacheUrlMatcher扩展UrlMatcher因此,即使你不重新生成mod_rewrite规则,一切都将工作(因为在结束ApacheUrlMatcher::匹配()
呼叫父::匹配()
完成)。
生成mod_rewrite规则
为了测试它的工作,为AppBundle创建一个非常基本的路由:
- YAML
- XML
- PHP
1 2 3 4
# app / config / routing.yml你好:路径:/ hello /{名称}默认值:{_controller:AppBundle:问候:你好}
1 2 3 4
<!——app/config/routing.xml——> .xml<路线id=“你好”路径=“你好/{名称}”><默认的关键=“_controller”>AppBundle:问候:你好默认的>路线>
1 2 3 4
/ / app / config / routing.php$集合->add (“你好”,新路线(“/ hello /{名称}”,数组(“_controller”= >“AppBundle:问候:你好”)));
现在生成mod_rewrite规则:
1
$PHP应用程序/控制台路由器:dump-apache -e=prod——no-debug
大致输出如下:
1 2 3 4 5 6 7
#跳过“真正的”请求RewriteCond% {REQUEST_FILENAME}- fRewriteRule* -(QSA L)#你好RewriteCond% {REQUEST_URI}^ /你好 /([^/]+?)$RewriteRule. * app.php[QSA L E = _ROUTING__route:你好,E = _ROUTING_name: % 1, E = _ROUTING__controller: AppBundle \: \打招呼:你好)
现在你可以重写web / . htaccess
要使用新规则,那么在这个例子中,它应该看起来像这样:
1 2 3 4 5 6 7 8 9 10 11
< IfModule mod_rewrite.c >RewriteEngine在#跳过“真正的”请求RewriteCond% {REQUEST_FILENAME}- fRewriteRule* -(QSA L)#你好RewriteCond% {REQUEST_URI}^ /你好 /([^/]+?)$RewriteRule. * app.php[QSA L E = _ROUTING__route:你好,E = _ROUTING_name: % 1, E = _ROUTING__controller: AppBundle \: \打招呼:你好)< / IfModule >
请注意
如果你想充分利用这个设置,每次添加/更改路由时都应该执行上面的步骤。
就是这样!现在您已经准备好使用Apache路由了。
额外的调整
为了节省一些处理时间,更改的发生情况请求
来ApacheRequest
在web / app.php
:
12 3 4 5 6 7 8 9 10 11 12
/ /网络/ app.phprequire_once__DIR__.“/ . . / app / bootstrap.php.cache”;require_once__DIR__.“/ . . / app / AppKernel.php”;// require_once __DIR__.'/../app/ appache .php';使用ob娱乐下载\组件\HttpFoundation\ApacheRequest;$内核=新AppKernel (“刺激”,假);$内核->loadClassCache ();// $kernel = new appache ($kernel);$内核->处理(ApacheRequest::createFromGlobals ())->send ();