1

我们正在为基于 Wordpress 的网站测试不同的主页。我们希望访问的人随机登陆,以便我们可以确定每个设计中有多少人遵循注册过程。

我们有广告活动,当点击时会直接指向相应的主页(A、B、C 或 D),但域名只是其中之一,当然。如果有人键入 URL,他们将被定向到一个域 (Home 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

4 回答 4

2

无法通过 .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 认为用户正在尝试使用参数 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
于 2013-04-27T11:03:17.887 回答
1

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

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

然后在 apache 的服务器或 vhost 配置中声明地图:

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

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

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

此规则必须位于您的 htaccess 文件中已有的任何规则之前。

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

浏览器地址栏中的 URL 仍然存在http://example.com/,但他们会从“home_pages.txt”文件中获得一个随机页面。

于 2013-04-27T21:07:43.980 回答
0

If you are using SQL for the site you can increment an integer for each access and module it by 4 [because of your 4 homepages in your network] and make load the homepage making calls depending on that integer. In this case you can have 4 different calls of the homepage, even if a user access the network from a mobile device.

于 2013-04-27T10:25:54.080 回答
0

您可能希望使用 URL 数组和从 0 到 3 的随机整数来编辑 index.php,这将随机返回列表中的 URL 之一。

于 2013-04-27T10:43:04.413 回答