如何使用Apache路由器吗
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.8,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。
如何使用Apache路由器吗
谨慎
使用Apache路由器不再被认为是一个很好的实践。小应用程序中增加了路由性能不值得麻烦不断的更新路由配置。
Apache路由器将被删除在Symfony 3和强烈建议不要在您的应用程序ob娱乐下载中使用它。
ob娱乐下载Symfony,开箱即用的快,还提供了各种方法来增加,速度一点调整。其中一个方法是通过让Apache处理直接路线,而不是使用Symfony的任务。ob娱乐下载
谨慎
Apache路由器在Symfony弃用2.5和3.0在Symfoob娱乐下载ny将被删除。自从路由器的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路由
提示
请注意,ApacheUrlMatcher扩展UrlMatcher所以即使你不再生mod_rewrite的规则,一切都将结束时(因为工作ApacheUrlMatcher::匹配()
调用父::匹配()
完成)。
生成mod_rewrite规则
测试工作,为AppBundle创建一个非常基本的路线:
- YAML
- XML
- PHP
1 2 3 4
# app / config / routing.yml你好:路径:/ hello /{名称}默认值:{_controller:AppBundle:问候:你好}
现在生成mod_rewrite规则:
1
美元php应用程序/控制台路由器:dump-apache - e =刺激——没有调试
输出应该大致如下:
1 2 3 4 5 6 7
#跳过“真实”的请求RewriteCond% {REQUEST_FILENAME}- fRewriteRule* -(QSA L)#你好RewriteCond% {REQUEST_URI}^ / hello /([^ /] + ?)美元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}^ / hello /([^ /] + ?)美元RewriteRule. * app.php[QSA L E = _ROUTING__route:你好,E = _ROUTING_name: % 1, E = _ROUTING__controller: AppBundle \: \打招呼:你好)< / IfModule >
请注意
上面的程序应该每次添加/更改路线,如果你想充分利用这个设置。
就是这样!你现在将使用Apache的路线。
额外的调整
节省处理时间,出现的变化请求
来ApacheRequest
在web / app.php
:
1 2 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 / AppCache.php”;使用ob娱乐下载\组件\HttpFoundation\ApacheRequest;美元内核=新AppKernel (“刺激”,假);美元内核- >loadClassCache ();/ /内核= new AppCache美元($内核);美元内核- >处理(ApacheRequest::createFromGlobals ())- >send ();