是否可以重定向2个不同的域,反之亦然?

时间:2017-10-22 06:38:53

标签: php .htaccess redirect

我想知道是否可以重定向2个不同的域,反之亦然。假设我有2个域,例如contextMenuStrip1.Show(ListViewCostumControl.lvnf, loc); www.abc.com。现在,如果有任何观看者点击www.xyz.com,则应将其重定向到www.abc.com,当任何观看者点击www.xyz.com时,他们都会被重定向到www.xyz.com。是否有任何功能或托管服务可以做到这一点?我知道重定向可以简单地使用PHP www.abc.com完成,但是一旦我这样做,它将被重定向到位置站点,没有办法获得原始站点。有人可以帮忙吗?感谢。

3 个答案:

答案 0 :(得分:0)

假设在访问www.xyz.com时我们想将用户重定向到www.abc.com,当我们访问www.abc.com时,我们希望将用户重定向到www.xyz.com

通过使用会话,我们可以做到。

<?php
//on abc.com
session_start();
if(!isset($_SESSION['abc']) || $_SESSION['abc'] != true ){
    $_SESSION['xyz'] = true;
    header('Location: www.xyz.com');
}

现在,

<?php
//on xyz.com
session_start();
if(!isset($_SESSION['xyz']) || $_SESSION['xyz'] != true ){
    $_SESSION['abc'] = true;
    header('Location: www.abc.com');
}

答案 1 :(得分:0)

首先,我会强烈建议不要与您的客户进行此操作。但是......使用.htaccess,我们可以使用重定向设置查询字符串标志,以防止无限重定向循环。

如果地址仅适用于www.abc.com,我们只有在标记(表明我们尚未重定向)的标志不存在时才会重定向到www.xyz.com

这是未经测试的,但这个概念会起作用。

RewriteEngine On
#abc => xyz
RewriteCond %{HTTP_HOST} ^www\.abc.com
RewriteCond %{QUERY_STRING}  !^flag=fromxyz$
RewriteRule ^(.*)$  www.xyz.com?flag=fromabc [L,R=301]

#xyz => abc
RewriteCond %{HTTP_HOST} ^www\.xyz.com
RewriteCond %{QUERY_STRING}  !^flag=fromabc$
RewriteRule ^(.*)$  www.abc.com?flag=fromxyz [L,R=301]

您还可以使用php完成相同的操作 - 将查询字符串附加到重定向并在header()重定向之前对其进行测试。类似的东西:

if ($_SERVER[HTTP_HOST] == "www.abc.com"){
    if ($_SERVER[QUERY_STRING] !== "flag=fromxyz"){
        header("Location: www.xyz.com?flag=fromabc.com"); 
        die();
    }
}
if ($_SERVER[HTTP_HOST] == "www.xyz.com"){
    if ($_SERVER[QUERY_STRING] !== "flag=fromabc"){
        header("Location: www.abc.com?flag=fromxyz.com"); 
        die();
    }
}

.htaccess方法效率更高,因为服务器在重定向之前不必加载php文件。

此外,使用$_SESSION变量是@AnimeshSahu提到的选项。但是,在所有情况下可能都不支持它们(例如Googlebot)

答案 2 :(得分:0)

您可以使用referer

RewriteCond%{HTTP_REFERER}!。 abc.com。 $ RewriteRule ^(。*)$ www.xyz.com/$1 [L,R = 301]

如果引用者不是ABC.com则重定向。

未经测试但应该有效,因为301将包含引用