Symfony 路由主机正则表达式

问题描述 投票:0回答:2

我的 Symfony 项目中有一条路由,该路由应仅限于在子域中包含特定单词的主机,域并不重要,而且会有所不同。可以说这个特定的词是“pre”,所以我只希望像这样构建的主机(pre.anything.com、pre.anything2.co.uk、pre.anything3.us)访问特定路由。是否可以在 symfony 路由中这样配置它?

routes.yaml

base_register:
    path:     /register/
    host:     "/pre/"
    defaults: { _controller: App\Controller\AppController::registerAction }

使用:

  • Symfony 4.2
  • PHP 7.2
php regex symfony routes
2个回答
1
投票

您的用例与子域的文档类似:https://symfony.com/doc/4.1/routing/hostname_pattern.html#using-placeholders

您可以使用此配置:

base_register:
    path:     /register/
    host:     "pre.{domain}"
    controller: App\Controller\AppController::register
    defaults:
        domain: '%domain%'
    requirements:
        domain: '%domain%'

然后在您的parameters.yml中定义您设置默认域的

domain
参数。

在您的域要求中,您可以设置

(.*)
以捕获域和子域。


0
投票

您可以在路线中使用

condition

base_register:
    path:     /register/
    condition: "context.getHost() matches '/pre/'"
    controller: App\Controller\AppController::register

这是 Symfony 的文档: https://symfony.com/doc/current/routing.html#matching-expressions

© www.soinside.com 2019 - 2024. All rights reserved.