2010-09-14 60 views
5

我的symfony应用程序应该从子域得到用户的语言:symfony的语言选择基于子域

en.project.com - 英语 fr.project.com - 法国

等等... 特殊过滤器从当前uri获取'GET'param'lang'并将其保存在用户属性中。 如何为多个子域设置apache虚拟主机配置?

+0

我的咖啡应该是热的,但相反,它是温和的.. – 2010-09-14 09:28:05

回答

0

尝试在你的httpd配置文件将其添加为ServerAlias

2
<VirtualHost *:80> 
ServerName blah.com 
ServerAlias de.blah.com en.blah.com fr.blah.com 
... 
</VirtualHost> 

了解更多关于服务器别名:第一个请求期间http://httpd.apache.org/docs/2.0/en/mod/core.html#serveralias

你Symfony的过滤器可以直接解析域名,并设置一个会话变量。 这是未经测试,但应该工作:

<?php class localeFilter extends sfFilter 
{ 
    public function execute($filterChain) 
    { 
    // Execute this filter only once 
    if ($this->isFirstCall()) { 
     $host = $_REQUEST['HTTP_HOST']; 
     $locale = array_shift(explode(".",$host)); 
     $this->getUser()->setAttribute('locale', $locale); 
    } 

    // Execute next filter 
    $filterChain->execute(); 
    } 
} ?>