【问题标题】:Symfony Routing Host Regular ExpressionSymfony 路由主机正则表达式
【发布时间】:2020-07-27 12:37:36
【问题描述】:

我的 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


    【解决方案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 参数,在其中设置您的默认域。

    在您的域要求中,您可以设置(.*) 来捕获域和子域。

    【讨论】:

    • 试图让它工作,但没有结果。就像你说的那样配置它,我得到一个错误“找不到路由”。当我删除“主机”选项时,一切正常。原因可能是我尝试使用子域(pre.subdomain.domain.com)访问此路由?
    • 作为我设置的要求 (.*) 并且它开始正常工作。感谢您的帮助。
    • 很高兴知道它正在工作,我将您的评论添加到我的答案中。请接受与您有/(将有)相同问题的人的答案。
    猜你喜欢
    • 2017-05-13
    • 2020-10-10
    • 2019-01-01
    • 2014-04-14
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多