Я использую MaxMind's GeoIp2 PHP для перенаправления посетителей сайта по их стране.PHP Перенаправление только один раз с помощью GeoIp2
мне удалось получить редирект работает так, что:
США посетители идут в http://www.example.com/us
малайзийских посетителей пойти http://www.example.com/my
Все остальные посетители идут в http://www.example.com
Проблема заключается в том, что я только хочу, чтобы перенаправить посетителей один раз. После того, как они находятся на веб-сайте, если они перейдут на http://www.example.com
, они должны быть в состоянии сделать это, не перенаправляясь, независимо от их страны.
Это так, что и люди, и пауки все еще могут свободно посещать страницы, которые не нацелены на их страну.
Я попытался использовать это предложение, аналогичное тому, которое было задано here , но вопрос о разных доменах для разных стран, а не о разных путях, поэтому решение для меня не работает.
Код:
<?php
require_once '../vendor/autoload.php';
use GeoIp2\Database\Reader;
$reader = new Reader('/usr/local/share/GeoIP/GeoLite2-Country.mmdb');
$record = $reader->country($_SERVER['REMOTE_ADDR']);
try {
$country = $record->country->isoCode;
switch((string)$country) {
case 'US':
$url = "http://www.example.com/us";
break;
case 'MY':
$url = "http://www.example.com/my";
break;
default:
$url = "http://www.example.com";
}
if (strpos("http://$_SERVER[HTTP_HOST]", $url) === false)
{
header("Location: ".$url);
}
} catch (Exception $e) {
// Handle exception
}
?>
Любая помощь очень ценится.
Спасибо за совет! Я пробовал ваше решение, но посетители из США все еще продолжают перенаправляться на сайт/us. Я думаю, что проблема, вероятно, заключается в следующем разделе кода, хотя я не уверен на 100%: if (strpos («http: // $ _ SERVER [HTTP_HOST]», $ url) === false) {3 header («Местоположение:». $ Url); } – Leb
Они не должны перенаправляться вообще, как только cookie установлен, они должны перейти в раздел кода «// cookie is not redirect». Если в браузере пользователей не разрешены файлы cookie, они будут перенаправляться все время. – AEQ
Вы правы, были проблемы с удалением файлов cookie с помощью Chrome при запуске тестов. Протестировано ваше решение с помощью Safari (проще удалить/проверить файлы cookie), и все работает как шарм. – Leb