如何使用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的路线。

额外的调整

节省处理时间,出现的变化请求ApacheRequestweb / 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 ();
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。