如何根据主机匹配路由

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 3.1,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

如何根据主机匹配路由

也可以在HTTP上进行匹配宿主传入请求的。

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8
mobile_homepage:路径:/主持人:m.example.com默认值:_controller:AcmeDemoBundle:主要:mobileHomepage主页:路径:/默认值:_controller:AcmeDemoBundle:主要:主页

两条路由匹配相同的路径/,但是只有当主机为时,第一个才会匹配m.example.com

使用占位符

host选项使用与路径匹配系统相同的语法。这意味着你可以在主机名中使用占位符:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8
projects_homepage:路径:/主持人:“.example.com {project_name}”默认值:_controller:AcmeDemoBundle:主要:mobileHomepage主页:路径:/默认值:_controller:AcmeDemoBundle:主要:主页

您还可以为这些占位符设置需求和默认选项。例如,如果您希望两者都匹配m.example.com而且mobile.example.com,你可以用这个:

  • YAML
  • XML
  • PHP
12 3 4 5 6 7 8 9 10 11 12
mobile_homepage:路径:/主持人:“.example.com{子域名}”默认值:_controller:AcmeDemoBundle:主要:mobileHomepage子域名:要求:子域名:m |移动主页:路径:/默认值:_controller:AcmeDemoBundle:主要:主页

提示

如果你不想硬编码主机名,你也可以使用服务参数:

  • YAML
  • XML
  • PHP
12 3 4 5 6 7 8 9 10 11 12
mobile_homepage:路径:/主持人:“米{域}”。默认值:_controller:AcmeDemoBundle:主要:mobileHomepage域:“%域%”要求:域:“%域%”主页:路径:/默认值:_controller:AcmeDemoBundle:主要:主页

提示

属性的默认选项占位符,否则每次使用路由生成URL时都需要包含一个域值。

引入路由的主机匹配

还可以对引入的路由设置host选项:

  • YAML
  • XML
  • PHP
1 2 3
acme_hello:资源:“@AcmeHelloBundle /资源/ config / routing.yml”主持人:“hello.example.com”

主机hello.example.com将在从新路由资源加载的每个路由上设置。

测试你的控制器

如果您希望在功能测试中通过url匹配,则需要在请求对象上设置Host HTTP标头。

1 2 3 4 5 6 7
履带客户端->请求(“得到”' /主页'数组(),数组(),数组“HTTP_HOST”= >“m”。客户端->getContainer ()->getParameter (“域”)));
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。