如何使用Apache路由器
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.4,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
如何使用Apache路由器
ob娱乐下载Symfony虽然快速开箱即用,但也提供了各种方法来通过一点点调整来提高速度。其中一种方法是让Apache直接处理路由,而不是使用Symfony来完成这项任务。ob娱乐下载
更改路由器配置参数
要转储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 6 7
<!——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规则
为了测试它是否工作,为AcmeDemoBundle创建一个非常基本的路由:
- YAML
- XML
- PHP
1 2 3 4
# app / config / routing.yml你好:路径:/ hello /{名称}默认值:{_controller:AcmeDemoBundle:演示:你好}
1 2 3 4
<!——app/config/routing.xml——> .xml<路线id=“你好”路径=“你好/{名称}”><默认的关键=“_controller”>AcmeDemoBundle:演示:你好默认的>路线>
1 2 3 4
/ / app / config / routing.php$集合->add (“你好”,新路线(“/ hello /{名称}”,数组(“_controller”= >“AcmeDemoBundle:演示:你好”)));
现在生成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: AcmeDemoBundle \:演示\:你好)
现在你可以重写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: AcmeDemoBundle \:演示\:你好)< / 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 ();
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。