我的 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 }
使用:
您的用例与子域的文档类似: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
参数。
在您的域要求中,您可以设置
(.*)
以捕获域和子域。
您可以在路线中使用
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