На моем клиентском сайте с использованием silverstripe 3 я пытаюсь установить sh перенаправление домашней страницы на основе языка пользователя.
Я впервые работаю с этой cms, поэтому получил информацию об изменении в папке mysite\code\pages
файла с именем StartPage.php
со следующим кодом
class StartPage_Controller extends Page_Controller {
public function init() {
parent::init();
$ip = $_SERVER['REMOTE_ADDR'];
$data = json_decode(file_get_contents('http://freegeoip.net/json/' . $ip));
if ($data->country_code == 'PL') {
$this->redirect('pl/start', 301);
} else {
$this->redirect('en/home', 301);
}
}
}
}
Это дало результатов нет и сайт по-прежнему перенаправлен на /en/home
, поэтому я попытался в любом случае принудительно выполнить перенаправление, оставив только $this->redirect('pl/start', 301);
По-прежнему никаких результатов.
Поэтому, отключив его, я отредактировал _config.php
файл и добавил эти строки вверху
$currentpage = $_SERVER['REQUEST_URI'];
if ($currentpage == '/' or $currentpage =='') {
$lc = ""; // Initialize the language code variable
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
$lc = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
}
if($lc == "pl"){
header("location: /pl");
exit();
}
if ($lc == 'de') {
header("location: /de");
exit( );
}
else{
header("location: /en");
}
}
Это работает несколько хорошо, например, на chrome рабочем столе язык перенаправлен правильно, но на мобильных chrome и Firefox он все еще перенаправлен на Engli sh стр.