symfony语言选择基于子域

时间:2010-09-14 09:25:07

标签: php internationalization symfony1

我的symfony应用程序应该从子域获取用户的语言:

en.project.com - 英文版 fr.project.com - 法语

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

3 个答案:

答案 0 :(得分: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();
  }
} ?>

答案 1 :(得分:0)

您只需要使用mod_rewrite重写通配符域,当您将子域作为参数时,您可以继续。

http://www.easymodrewrite.com/example-subdomains

答案 2 :(得分:0)

尝试在httpd配置文件中将它们添加为ServerAlias