[英]“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.