如何随机化主页

时间:2013-04-27 10:11:41

标签: wordpress apache .htaccess

我们正在为基于Wordpress的网站测试不同的主页。我们希望访问的人随机登陆他们,这样我们就可以确定每个设计中注册过程的次数。

我们的adword广告系列在点击时会指向相应的主页(A,B,C或D),当然,域名只是一个。如果有人输入了URL,他们将被定向到一个域(主页A)。

我们的目标网页如下:

Home A: www.mydomain.com
Home B: www.mydomain.com/?page_id=119
Home C: www.mydomain.com/?page_id=132
Home D: www.mydomain.com/?page_id=153

我试图通过.htaccess这样做,但无法让它工作。你能建议一个方法吗?

我们可能会有一些人登陆“Home C”,下一个人登陆“Home D”,下一个人登上“Home A”,依此类推。它并不是随机的,但它适用于我们,因为它确保“一个随机的人会落在一个随机的主页上”

PS:我们留下一个cookie,以确保注册的回访者能够获得相同的主页。使用的方法也应考虑到这一点。

感谢大家! 米格尔

4 个答案:

答案 0 :(得分:1)

无法通过.htaccess随机化重定向。你需要做的是从wordpress索引文件中重定向。

这里是我在开头的index.php中包含的一些例子:

<?php 

if(empty($_GET)){//user is trying to access home page
 $homePages = array("www.mydomain.com/?page_id=119", "www.mydomain.com/?page_id=132", "www.mydomain.com/?page_id=153");
  $randomHome = "";
  if (isset($_COOKIE["randomHome"])){
      $randomHome = $_COOKIE["randomHome"];
  }
 else{
  $randomHome = $homePages[array_rand($homePages)];//get home page from a random index
  $_COOKIE["randomHome"] = $randomHome;
 }
  header("Location: " . $randomHome);
}
//and here goes rest of your wordpress index.php

另一种方法是,根本不重定向,并将wordpress视为认为用户试图使用params page_id = N进行访问。

<?php 

if(empty($_GET)){//user is trying to access home page
 $homePages = array(119, 153, 132);
  $randomHome = "";
  if (isset($_COOKIE["randomHome"])){
      $randomHome = $_COOKIE["randomHome"];
  }
 else{
  $randomHome = $homePages[array_rand($homePages)];//get home page id from a random index
  $_COOKIE["randomHome"] = $randomHome;
 }
  $_GET["page_id"] = $randomHome;//this will trick wp into thinking that user passed page_id=119 via browser, and hence random page will show
}
//and here goes rest of your wordpress index.php

答案 1 :(得分:1)

除了php解决方案之外,如果您可以访问服务器的配置或vhost配置,则可以创建随机RewriteMap。所以你有一个看起来像的文件(假设它叫做 home_pages.txt ):

home /
home /?page_id=119
home /?page_id=153
home /?page_id=132

然后在apache的服务器或vhost config中声明映射:

RewriteMap home rnd:/path/to/file/home_pages.txt

然后在vhost,server或文档根目录中的htaccess文件中,您可以添加:

RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteRule ^/?$ ${home:home} [L]

此规则必须之前您的htaccess文件中可能存在的任何规则。

第一个条件使得任何内部重定向都完全跳过规则(防止循环)。然后该规则声明/(主页)的请求调用重写映射的“home”哈希(这就是文件中每个URI前面有“home”的原因)并随机抽取一个他们在内部重定向到那个。

浏览器位置栏中的网址仍为http://example.com/,但他们会从“home_pages.txt”文件中获取一个随机页面。

答案 2 :(得分:0)

如果您正在为站点使用SQL,则可以为每次访问增加一个整数,并将其模块加4 [由于您的网络中有4个主页],并根据该整数加载主页进行调用。 在这种情况下,即使用户通过移动设备访问网络,您也可以有4个不同的主页呼叫。

答案 3 :(得分:0)

您可能希望编辑index.php,其中包含一个URL数组和一个0到3的随机整数,它将随机返回列表中的一个URL。