Zend 2路由主机名正则表达式

时间:2014-10-31 17:48:05

标签: php regex zend-framework2 hostname

我想通过Zend 2中的路由类型Hostname捕获我的(可选)子域和域。

我不善于复兴,无法找到正常工作的东西。

'type' => 'Hostname',
'options' => array(
     'route' => '[:subdomain.]:project_domain',
     'constraints' => array(
          'subdomain' => '??REGEX??',
          'project_domain' => '??REGEX??',
     ),
),
'may_terminate' => false,

示例1: www.domain.tld => subdomain = www; project_domain = domain.tld

示例2: test.www.domain.tld => subdomain = test; project_domain = www.domain.tld

示例3: domain.tld => project_domain = domain.tld

如果有人可以帮我解决这2个正则表达式模式,谢谢!

1 个答案:

答案 0 :(得分:1)

我最终得到了这个:

'type' => 'Hostname',
'options' => array(
   'route' => '[:subdomain.]:project_domain',
   'constraints' => array(
       'subdomain' => '([a-zA-Z0-9-]+)?([^.])',
       'project_domain' => '(([a-zA-Z0-9-]+)\.)+([a-zA-Z0-9]+)',
   ),
),

它适用于我的用例:

  • test.domain.tld
  • 使用domain.tld
  • test1.sub.domain.tld
  • ASD-asd.sub.do-main.tld

如果有人发现不合作的内容,请不要发表评论。

谢谢。