Я пытаюсь: сделать перенаправление на основе IP-адреса посетителя, мой веб-сайт размещен на wpengine, и у них есть служба GEO IP, из которой я могу получить страну пользователей на основе их IP. Если вы заходите на сайт из Швеции, Дании или Норвегии, вы не будете перенаправлены, а останетесь на странице... http://www.centuri.se но если вы не из этой страны, вы будете перенаправлены на англоязычную версию сайта, которая переведена с помощью wpml... поэтому вы перейдете на эту страницу... http://www.centuri.se/en/, который является переведенным.
Я использую этот фрагмент кода для перенаправления.
<?php
// THE COOKIE NAME
$cookie_name = "country";
// ACCEPTED COUNTRIES THAT SKIPS THE REDIRECT
$countries = array('se','dk','no');
// CHECK IF YOUR COOKIE IS SET
if (!isset($_COOKIE[$cookie_name])) {
// GET USER INFO
$userInfo = do_shortcode('[geoip-country]');
// GET COUNTRY INTO LOWERCASE
$country = strtolower($userInfo);
//SET COOKIE BASED ON COUNTRY NAME FROM USER
setcookie('country', $country, time() + (3600 * 24 * 30), '/');
if(!in_array($country, $countries)) {
//Set a cookie to tell that this user has been redirected
setcookie('redirect', 1, time() + (3600 * 24 * 30), '/');
wp_redirect( home_url() . '/en/' ); exit;
}
}
?>
На моем промежуточном сервере от wpengine это решение работает безупречно, вы можете сами протестировать его http://centuri.staging.wpengine.com, но когда этот скрипт применяется к моему действующему серверу, я перенаправляюсь на http://www.centuri.se/en/en и получит сообщение 404 - я попытался переключить часть перенаправления с home_url() на site_url() вместо того, чтобы увидеть разницу, но если я сделаю это на своем действующем сервере это даст мне цикл перенаправления. На данный момент я прокомментировал это для моего живого сайта, так как это приведет к сбою моего сайта.
Может ли это быть какая-либо настройка, сделанная в WPML? я действительно не знаю, что делать дальше ... это так запутанно, поскольку он работает безупречно на моем промежуточном сервере, а не на моем реальном сервере, а код и базы данных идентичны.