ZF2语言的子域路由

时间:2013-10-28 09:53:15

标签: routing zend-framework2 subdomain

对于我的应用程序,我想使用子域来设置语言,例如:   - site.com(英文)   - de.site.com(德语)   - nl.site.com(荷兰语)

我将子域配置设置如下:

'home' => array(
           'type' => 'hostname',
            'options' => array(
                'route' => ':lang.site.:tld',
                    'defaults' => array(
                        'controller' => 'Application\Controller\Application',
                        'action'     => 'index',
                        'lang'       => 'en',
                    ),
                    'constraints' => array(
                        'lang'     => '(|nl|de)',
                        'tld'      => '(localhost|com)',
                    ),
                ),

我面临的问题是我只想浏览英文版(site.com) 没有子域但我遇到'找不到页面',我以为我......'route'=> ':lang.site。:tld'.. as'[:lang] .site。:tld'但这似乎不起作用。

任何? :)

提前致谢,

尼克

1 个答案:

答案 0 :(得分:0)

我敢打赌,你在:lang param之后有一个点,并且不会允许site.com传递(.site.com可能)的网址。所以我将:lang设为可选 - 当空时,应该回退到默认en值。 我也没有看到:tld param存在的任何理由,所以我把它扔掉了。我猜你首先不需要它,因为你提供的网址示例。

   'home' => array(
        'type' => 'hostname',
        'options' => array(
        'route' => '[:lang][.]site.com', 
            'defaults' => array(
                'controller' => 'Application\Controller\Application',
                'action'     => 'index',
                'lang'       => 'en',
             ),
             'constraints' => array(
                 'lang'     => '(en|nl|de)',
             ),
    ),

为了完整性,我还将en抛入您的备选方案,这不会影响匹配,因为只有在存在参数值时才应检查约束。

我没有时间测试它,但我认为如果我对ZF2路由的理解是正确的,它应该可以工作。