簡體   English   中英

“此網頁具有重定向循環”(帶有GeoIP的重定向網站)

[英]“This webpage has a redirect loop” (redirect website with GeoIP)

我正在嘗試向我的網站添加一些代碼,以便根據用戶的IP地址重定向用戶。 無論我做什么,都會收到“此網頁具有重定向循環”消息。

這是我的代碼:

if(isset($_GET['FirstTimer'])){
    setcookie('FirstTimer','something',strtotime('+1 year'),'/');
    $_COOKIE['FirstTimer']='something'; 
}

require_once('geoip.inc');

$gi = geoip_open('GeoIP.dat', GEOIP_MEMORY_CACHE);
$country = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);

if(!isset($_COOKIE['FirstTimer'])): 
    if($_SERVER['REQUEST_URI'] == '/'){ 
        switch((string)$country) {
            case 'GR':
                header('Location: http://mywebsite.com/');
                break;
            case 'RU':
                header('Location: http://mywebsite.com/ru');
                break;
            default:
                header('Location: http://mywebsite.com/en');
        }
    }
endif;

geoip_close($gi);

“ FirstTimer” cookie用於確定訪客是否是新訪客(因為我只想重定向新訪客)。

代碼位於我的index.php文件的頂部,'\\ <\\?php?>'標記之前沒有空格。

我假設未設置$_GET['FirstTimer'] 因此,您的切換始終會執行。

當geoip返回GR您的腳本將再次重定向到http://mywebsite.com/ $_SERVER['REQUEST_URI']返回/ ,您又回到了切換狀態。

有你的循環。

編輯

我對您的腳本進行了一些更改。 無需記錄用戶是否第一次訪問(這沒有意義),而只需記錄用戶上次訪問的時間即可。 如果未設置此cookie,請啟動geoip並重定向用戶。 如果已設置,請更新時間。

if(!isset($_COOKIE['last_visit'])) {
    setcookie('last_visit',date("Y-m-d H:i:s"),strtotime('+1 year'),'/');

    require_once('geoip.inc');

    $gi = geoip_open('GeoIP.dat', GEOIP_MEMORY_CACHE);
    $country = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);
    if($_SERVER['REQUEST_URI'] == '/'){ 
        switch((string)$country) {
            case 'GR':
                header('Location: http://mywebsite.com/');
                break;
            case 'RU':
                header('Location: http://mywebsite.com/ru');
                break;
            default:
                header('Location: http://mywebsite.com/en');
        }
    }

    geoip_close($gi);
} else {
    setcookie('last_visit',date("Y-m-d H:i:s"),strtotime('+1 year'),'/');
}

但是,您絕對應該增強此腳本,因為如果您的用戶訪問此頁面,將會發生以下情況:http: http://yourwebsite.com/great/article/link.html 也許您對此有翻譯,但是不會重定向用戶。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM