基于IP的重定向不再工作了,也许是基于主机名的重定向


Redirection based on IP doesn't work anymore, maybe something hostname based instead?

我有一个问题;我已经使用下面的两个例子很长时间了,所以它总是指向我正确的脚本。例如Sabnzbd和Sonarr。

然而,出乎意料的是,我的家庭ISP决定(几乎)每天更改我的IP。不仅是IP的最后一个范围,还有前面的数字。这使得适应我的脚本有点毫无意义,现在我想知道是否有一种方法来利用主机名代替。

我只在两个重要的位置使用这个"脚本"。其他的都不重要了。家庭供应商有"出路"。在主机名中有"Nl",在另一个位置有"ziggo"。

我使用几个脚本将我重定向到正确的位置,但下面的是示例。也许有人能一劳永逸地解决这个问题。

<?php
// Sabnzbd
$visitor = $_SERVER['REMOTE_ADDR'];
if (preg_match("/62.45.*.*/",$visitor)) {
      header('Location: http://192.168.1.55:9900');
} else {
      header('Location: http://place.dnsforwarder.eu:9900/');
};
?>
<?php
// Sonarr
$visitor = $_SERVER['REMOTE_ADDR'];
if (preg_match("/62.45.*.*/",$visitor)) {
      header('Location: http://192.168.1.55:3300');
} else {
      header('Location: http://place.dnsforwarder.eu:3300/');
};
?>

我想使用主机名,而不是基于IP的东西,所以无论我在任何一天给定什么IP都无关紧要。

我已经想过切换它,但是在另一个地方我的IP也经常变化。叹息。

我希望有人能理解我的意思,并能想出某种可行的解决方案和/或例子与上述....使用谢谢。

(编辑/更新/更多信息)

显然这不是很清楚。我在个人开始(web)页面上使用上述代码。所以我可以点击这两个链接,它会重定向到我的本地IP和端口号,否则它会动态dns服务(afraid.org)正确重定向我。在本例中,它是"place.dnsforwarder"。Eu "作为DNS转发(因此得名)。

然而,正如解释的那样,两个ISP(不同的)每天都在更改我的IP号码。所以代码不再工作,因为它应该(至少在一个位置)。现在,我想知道是否可以使用基于主机名的东西,而不是某种IP检查(基于我的2个ISP;ziggo。不,不,不。这样,即使他们每分钟更改我的IP也没关系,我总能被转发到正确的地方。

旁注;我当然可以创建2个不同的起始页面,每个位置一个,但这带来了大量的工作,更重要的是;它不会正常工作,因为浏览器现在是同步的,这意味着我将不得不改变我的起始页(1或2)每次我去两个位置之一…

我相信你是在寻找这样的东西:

// Sabnzbd
$visitor = $_SERVER['REMOTE_ADDR'];
$hostname = gethostbyaddr($visitor);
if (stristr($hostname, 'caiway.nl')) {
      header('Location: http://192.168.1.55:9900');
} else {
      header('Location: http://place.dnsforwarder.eu:9900/');
}
// Sonarr
$visitor = $_SERVER['REMOTE_ADDR'];
$hostname = gethostbyaddr($visitor);
if (stristr($hostname, 'ziggo.nl')) {
      header('Location: http://192.168.1.55:3300');
} else {
      header('Location: http://place.dnsforwarder.eu:3300/');
}

gethostbyaddr将把IP地址解析为主机名