Symfony子域路由

时间:2017-03-10 03:48:13

标签: dns symfony plesk

我遇到子域路由问题。

我希望在子域 admin.domain.com

上进行管理
admin:
    host:     "www.admin.domain.com"
    resource: "@WebAdminBundle/Resources/config/routing.yml"
    schemes:  [https]

shop:
    resource: "@WebShopBundle/Resources/config/routing.yml"
    schemes:  [https]

但是来自 admin 我可以访问商店

中的路线

我的DNS:

CNAME admin is an alias of domain.com
CNAME www.admin is an alias of admin.domain.com

Plesk配置:

admin.domain.com与domain.com具有相同的文档记录

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

如果要添加子域,可以通过不同方式执行此操作。最简单的是:

像之前一样在routing.yml中定义路由,但是www存在问题 - 请勿使用它。因此,您对admin区域的主机指令将为host: "admin.domain.com"

我们在routing.yml中有一些小改动

admin:
host:     "admin.domain.com"
resource: "@WebAdminBundle/Resources/config/routing.yml"
schemes:  [https]

shop:
resource: "@WebShopBundle/Resources/config/routing.yml"
schemes:  [https]

在config.yml中,您可以定义domain_name变量:

parameters:

    #... 

    domain_name: "domain.com"

没有必要,但很方便!

并在security.yml access_control指令中。前三个路径 - 是与fosuser一起使用的示例,最后一个路径是通过“admin”子域访问您的管理区域

security:

    # ...

    access_control:
    - { path: ^/login$,     host: ^%domain_name%$,            role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register,   host: ^%domain_name%$,            role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/resetting,  host: ^%domain_name%$,            role: IS_AUTHENTICATED_ANONYMOUSLY }
    - {                     host: ^admin\.%domain_name%$,     roles: ROLE_ADMIN }

这不是最佳做法,但此解决方案解决了子域

的问题