根据位置重定向页面

Posted

技术标签:

【中文标题】根据位置重定向页面【英文标题】:Redirecting pages depending on location 【发布时间】:2015-06-16 18:29:22 【问题描述】:

请帮助我,因为我是 php 处女,请耐心等待。

我正在使用 Cloudflare,并希望将印度尼西亚以外的每个页面重定向到特定页面。经过几次尝试,我可以从index.php 重定向到每个单独的目标页面。

但是当我将此重定向代码放在目标页面上时,问题就来了。它似乎无限循环。我想保留此功能,因为我不希望点击 Google 搜索结果的访问者最终进入错误的页面。

如何正确检查每个页面上的IP,如果它们来自ID,那么它们将被重定向到index_id.php。如果他们不是,他们会去index_ww.php。这没有无限循环,因为这段代码在index_id.phpindex_ww.php 中。

$country_code = $_SERVER["HTTP_CF_IPCOUNTRY"];

if ($country_code=="ID")
    $link = 'http://www.myweb.com/index_id.php';
 else 
    $link = 'http://www.myweb.com/index_ww.php';

header("location:$link");
exit;

【问题讨论】:

【参考方案1】:

尝试在目标 URL 的末尾添加一个查询参数,例如 ?redirected=1,并始终在执行重定向代码之前检查该参数。这是一个例子:

<?php

if (empty($_GET['redirected'])) 
    $country_code = $_SERVER["HTTP_CF_IPCOUNTRY"];

    if ($country_code=="ID")
        $link = 'http://www.myweb.com/index_id.php?redirected=1';
     
    else 
        $link = 'http://www.myweb.com/index_ww.php?redirected=1';
    

    header("location:$link");
    exit;


?>

【讨论】:

以上是关于根据位置重定向页面的主要内容,如果未能解决你的问题,请参考以下文章

如何根据用户的状态位置将用户重定向到不同的 index.php 页面

根据IP将用户重定向到子域

如何根据国家IP地址重定向域

重定向回 Laravel 中的相同位置

根据 IP 位置管理重定向

地理位置重定向到不同域的同一页面?