对于我的应用程序,我想使用子域来设置语言,例如: - 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'但这似乎不起作用。
任何? :)
提前致谢,
尼克
答案 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路由的理解是正确的,它应该可以工作。