Я использую Symfony 1.2.7. Моя сеть написана на нескольких языках, каждый из которых находится в субдомене, например en.example.com, es.example.com. Если пользователь заходит на сайт example.com, я хочу перенаправить его на его язык. Я также хочу иметь поддержку staging.example.com и перенаправление на es.staging.example.com и en.staging.example.com, чтобы я мог протестировать все перед развертыванием.
У меня есть следующий код, который работает как с index.php, так и с frontend_dev.php. Мой вопрос: можете ли вы его улучшить? есть ли лучший или более чистый способ? Спасибо!
require_once(dirname(__FILE__).'/../config/ProjectConfiguration.class.php');
$configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'dev', true);
$context = sfContext::createInstance($configuration);
// get the domain parts as an array
$host = array_reverse(explode('.', $_SERVER['HTTP_HOST']));
list($tld, $domain, $subdomain) = $host;
// determine which subdomain we're looking at
$app = ($subdomain == 'staging') ? $subdomain2=$host[3] : $subdomain;
if(empty($app) || $app == 'www')
{
$browser_languages = $context->getRequest()->getLanguages();
foreach($browser_languages as $language)
{
$allowed_culture = in_array($language, sfConfig::get('app_languagesAvailable'));
if($allowed_culture)
{
$domain = $subdomain ? $subdomain.'.'.$domain : $domain;
$url = 'http://'.str_replace($domain.'.'.$tld, $language.'.'.$domain.'.'.$tld, $_SERVER['HTTP_HOST']).$_SERVER['REQUEST_URI'];
$context->getController()->redirect($url);
break;
}
}
}
$context->dispatch();
Обновить Решение: собственный фильтр
Подробнее здесь: https://stackoverflow.com/questions/313 ... on-symfony