Выбор языка Symfony на основе поддоменов - PullRequest
5 голосов
/ 14 сентября 2010

Мое приложение Symfony должно получать язык пользователя из субдомена:

ru.project.com - для английского языка fr.project.com - для французского

и так далее ... Специальный фильтр получает 'GET' параметр 'lang' из текущего URI и сохраняет его в атрибуте пользователя. Как настроить конфигурацию виртуального хоста apache для нескольких поддоменов?

Ответы [ 3 ]

2 голосов
/ 05 ноября 2010
<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();
  }
} ?>
0 голосов
/ 14 сентября 2010

Попробуйте добавить их как ServerAlias в файл конфигурации httpd.

0 голосов
/ 14 сентября 2010

Вам нужно просто переписать подстановочный домен, используя mod_rewrite, и, когда у вас будет субдомен в качестве параметра, вы можете идти дальше.

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

...