Перенаправление в зависимости от страны IP (Geo-IP) - PullRequest
0 голосов
/ 01 мая 2020

Этот код показывает страницу во время работы, а затем перенаправляет ее.
Я хочу, чтобы она перенаправлялась очень быстро, но это не так.

Где я сделал приложение blogspot.com

<script>
  fetch('https://freegeoip.app/json/')
  .then(function(response) {
    return response.json();
  })
  .then(function(data) {
    if(data.country_code == 'TR') {
      window.location.replace("https://www.google.com");
    }
  })
</script>

1 Ответ

0 голосов
/ 01 мая 2020

1. JavaScript решение с языком браузера (без задержки)

<script type="text/javascript">
var browserLang = navigator.language || navigator.userLanguage; 
if(browserLang.slice(0, 2) == 'tr') {
    window.location.replace("https://www.google.com");
}
</script>

Если это должен быть GeoIP, вы должны использовать серверный язык (например, PHP) и делать это оттуда. Вы также можете использовать таблицы гео-ip, которые немного быстрее.

2. PHP решение с внешним API (ipapi.com)

<?php
$ip = $_SERVER['REMOTE_ADDR'];
$access_key = 'YOUR_API_KEY'; // <-- Replace with your api key!

try {
    $ch = curl_init('https://api.ipapi.com/'.$ip.'?access_key='.$access_key);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $json = curl_exec($ch);
    curl_close($ch);
    $api_result = json_decode($json, true);

    if (
        $api_result !== null &&
        array_key_exists('country_code', $api_result) &&
        strtolower(substr($api_result['country_code'], 0, 2)) === 'tr'
    ) {
        header("HTTP/1.1 301 Moved Permanently");
        header("Location: https://www.google.com");
        header("Connection: close");
        exit;
    }
} catch (Exception $e) {
}
...