从国家重定向中排除 IP 地址

Posted

技术标签:

【中文标题】从国家重定向中排除 IP 地址【英文标题】:Excluding IP addresses from Country Redirection 【发布时间】:2013-04-10 15:07:34 【问题描述】:

我有这段代码,目前可以将加拿大的任何人重定向到我们网站的加拿大版本:

<?php
require_once('geoip.inc');
$gi = geoip_open('GeoIP.dat', GEOIP_MEMORY_CACHE);
$country = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);
// prints the country code  your visitor is in
if($country == 'CA')

header('Location: http://www.WEBSITE.ca');
exit();

// the end
geoip_close($gi);?>

我想知道如何才能将加拿大某人的 IP 地址排除在自动重定向之外,以便他们也可以访问我们网站的美国和欧盟版本?

【问题讨论】:

【参考方案1】:

您可以在 if 语句中添加另一个条件。

$ip = $_SERVER['REMOTE_ADDR'];
if($country == 'CA' && $ip !== '127.0.0.1')

   header('Location: http://www.WEBSITE.ca');
   exit();

$ip 将是当前正在查看该站点的人的 IP 地址。 您可以通过以下方式获得:

$_SERVER['REMOTE_ADDR'];

【讨论】:

OP 还应该允许用户选择他们是否希望被重定向,并将该偏好存储在 Session 变量中。【参考方案2】:

if 语句中使用&amp;&amp; 添加附加条件,例如“远程地址不等于此字符串”。

【讨论】:

以上是关于从国家重定向中排除 IP 地址的主要内容,如果未能解决你的问题,请参考以下文章

如何根据国家/地区的IP地址重定向网站

根据访问者 IP 地址(国家/地区)将主网站重定向到子域

将 http 重定向到 https 排除特定 IP

MaxMind GeoIP 从允许一个 IP 的国家/地区重定向用户

根据国家/地区重定向,但如果 IP 被列入白名单则允许

从 IP 地址重定向到域