Symfony 3 - 根据主机名进行路由

Symfony 3 - routing depending on the host name

我正在尝试有条件地使用具有多域的路由。

我目前拥有的是:

admin_routes:
    host:     "admin.{domain}"
    resource: "@AppBundle/Controller/Admin"
    type: annotation
    requirements:
        domain: domain.local|domain2.local
    defaults: { domain: domain.local }

user_routes:
    host:     "user.{domain}"
    resource: "@AppBundle/Controller/User"
    type: annotation
    requirements:
        domain: domain3.local|domain4.local
    defaults: { domain: domain3.local }

两个文件夹中的控制器具有相同的路由名称,因为这是应用程序的构建方式。 由于应用程序仍在加载两条路线,因此上述内容无效。对于来自管理员的用户域 url 是构建的。 我正在努力实现的目标是完全可能的还是我完全以错误的方式做的?

最终我想要的是给定主机名的控制器集仅为 "visible"。

路由需要有唯一的名称。如果有 2 条同名的路由,一条将覆盖另一条。至于主机规范,这只影响路由是否匹配。类似路线要求。

您的问题的解决方案是在两个控制器中以不同的方式命名路由。如何实现这一目标的一件事是通过 Controller class 注释中的路由名称前缀。

/**
 * @Route("/path", name="admin_")
 */

/**
 * @Route("/path", name="user_")
 */

https://symfony.com/blog/new-in-symfony-3-4-prefix-all-controller-route-names

路由可以有相同的 /path 前缀,但它们的名称需要不同。这样他们就可以在不同的条件下匹配相同的路径。