如何按特定顺序重定向我的网页?

时间:2014-05-23 17:23:38

标签: php redirect

我正在寻找一种方法将我的网页按顺序重定向到两个网址,这可能是在PHP中,但如果您有任何其他想法,请打我!它应该像这样工作:

Visitor 1 -> redirect to site1.com
visitor 2 -> redirect to site2.com
visitor 3 -> redirect to site1.com
visitor 4 -> redirect to site2.com

我认为你明白了这一点:)

2 个答案:

答案 0 :(得分:1)

你需要被称为“循环赛”的内容。

在每个访客重定向中根据当前位置。这受到竞争条件的影响,但对于此目的而言可能并不重要:

// Suggested location for RR counter
define('ROUND_ROBIN_FILE', '/tmp/site-counter.txt');

// Here's your queue
$possibleRedirects = array('site1.com', 'site2.com', 'site3.com');

// Get the current position
$position = file_get_contents(ROUND_ROBIN_FILE);
if (empty($position)) {
     $position = 0;
}
$position = ($position + 1) % count($possibleRedirects);

// Save the current position
file_put_contents($position, ROUND_ROBIN_FILE);

我的意思是'循环赛'是您有一个队列系统,您可以在其中存储所有可用的重定向URL。当用户1访问该页面时,您从队列/堆栈中删除最后一个重定向URL并重定向用户。将此操作保存在数据库中,可以是整个URL,也可以是@halfer建议的方式。

然后用户2访问并检查您的队列是否为空,如果它不为空,则从队列中删除另一个URL并重定向用户2并保存在数据库中。如果queue为空,则将队列重置为所有可用重定向并重置数据库。

答案 1 :(得分:0)

主要问题是您需要有关上一位访客的信息。

为此,您需要跟踪每个访问者被重定向到的内容,以便下一个访问者可以访问该信息。

如果您只有一个网络服务器,这很容易。 只需为偶数访问创建一个空文件,并将其删除即可访问。

 // Untested code, just to give the general idea

$trackingFile='/usr/share/whatever/oddvisit';
if(file_exists($trackingFile)){
    // even visitor
    unlink($trackingFile);
    Header('Location: http://url2.com');
    exit;
}else{
    // odd visitor
    touch($trackingFile);
    Header('Location: http://url1.com');
    exit;
}

如果你有多个网络服务器,这有点棘手。

如果您的所有Web服务器都无法访问NFS,则可以将奇数/偶数信息存储在数据库中。但如果你没有大量的交通工具,这是最好的。

如果您有很多流量,我认为最好的解决方案是接受每个网络服务器将重定向他们获得的访问者,与其他网络服务器的工作无关。有了非常大的数字,你应该得到相当不错的50/50重定向。