【问题标题】:In Symfony 2, how do I handle routing for multiple domains?在 Symfony 2 中,我如何处理多个域的路由?
【发布时间】:2014-09-15 17:23:48
【问题描述】:

我的应用设置为使用 3 个子域,我还有 2 个指向同一个应用的域,为我提供了这组 FQDN

admin.domain1.com, admin.domain2.com

www.domain1.com, www.domain2.com

kiosk.domain1.com、kiosk.domain2.com

在 routing.yml 中,我可以设置主机/资源键以将这些域指向相关捆绑包,但我一次只能为其中一个域执行此操作。

incompass_admin:
    host:     admin.domain1.com
    resource: "@IncompassAdminBundle/Resources/config/routes.yml"

incompass_web:
    host:     www.domain1.com
    resource: "@IncompassWebBundle/Resources/config/routes.yml"

incompass_kiosk:
    host:     kiosk.domain1.com
    resource: "@IncompassKioskBundle/Resources/config/routes.yml"

当我尝试这样的事情时

incompass_kiosk_1:
    host:     kiosk.domain1.com
    resource: "@IncompassKioskBundle/Resources/config/routes.yml"

incompass_kiosk_2:
    host:     kiosk.domain2.com
    resource: "@IncompassKioskBundle/Resources/config/routes.yml"

第二个域是唯一被识别的域,kiosk.domain1.com 抛出异常:No route found for "GET /"

有没有办法在 routing.yml 中将域设置为通配符,或者将 2 个不同的路由指向同一资源?

编辑:我也尝试过

IncompassKioskBundle/Resources/config/routes_1.yml
IncompassKioskBundle/Resources/config/routes_2.yml

IncompassKioskBundle/Resources/config/routes.yml
IncompassRoutingBundle/Resources/config/kiosk_routes.yml

其中 2 个文件中的路由名称不同,例如

// routes.yml
domain_one_kiosk_scanning:
    type: annotation
    prefix: /
    resource: Incompass\KioskBundle\Controller\ScanningController

domain_one_kiosk_printing:
    type: annotation
    prefix: /print
    resource: Incompass\KioskBundle\Controller\PrintingController 

// kiosk_routes.yml
domain_two_kiosk_scanning:
    type: annotation
    prefix: /
    resource: Incompass\KioskBundle\Controller\ScanningController

domain_two_kiosk_printing:
    type: annotation
    prefix: /print
    resource: Incompass\KioskBundle\Controller\PrintingController 

那没用。

【问题讨论】:

    标签: symfony routing wildcard


    【解决方案1】:

    你可以在路由中使用占位符,所以试试这样:

    incompass_kiosk:
        host:     "kiosk.{domain}.com"
        resource: "@IncompassKioskBundle/Resources/config/routes.yml"
        requirements:
            domain: domain1|domain2
        defaults: { domain: domain1 }
    

    您也可以在 .htaccess 或虚拟主机配置中处理此问题。

    【讨论】:

    • 感谢您的回复。当我尝试此操作时,我得到 在呈现模板期间引发了异常(“缺少一些强制参数(“域”)以生成路由的 URL
    • 您可能还需要定义一个默认值。见上文。
    猜你喜欢
    • 2015-05-24
    • 1970-01-01
    • 2021-07-08
    • 1970-01-01
    • 2023-03-10
    • 2021-03-24
    • 2018-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多