如何隐藏实际链接但不提醒联盟会员链接来自重定向链接?

时间:2014-07-20 06:11:42

标签: javascript php redirect

到目前为止,我已经尝试了一个简单的页面,301 php使用id重定向(domain.com/link/1234/)。然后我尝试了相同的php重定向(转发id)到php页面使用id和uri使用JavaScript重定向(使用onload重定向)。

如果我只是点击链接,一切正常。但重定向从联属公司收到404。关于如何实现这一目标的任何想法?

我希望我的所有链接都使用帖子的ID。

示例:domain.com/link/1234 /

而不是会员链接:affiliate.com/sniper.php?s=g&7=8&g=0

修改

因此,如果我在头脑中使用这个JavaScript,它会重定向完美。

<script>
    var url = "http://affiliate.com/sniper.php?s=g&7=8&g=0";

    // IE8 and lower fix
    if (navigator.userAgent.match(/MSIE\s(?!9.0)/))
    {
        var referLink = document.createElement("a");
        referLink.href = url;
        document.body.appendChild(referLink);
        referLink.click();
    }

    // All other browsers
    else { window.location.replace(url); }
</script>

但是如果我将PHP添加到JavaScript中以动态添加URL。例如:

<script>

    var url = "<?php echo $url_to_affiliate_website; ?>";

    // IE8 and lower fix
    if (navigator.userAgent.match(/MSIE\s(?!9.0)/))
    {
        var referLink = document.createElement("a");
        referLink.href = url;
        document.body.appendChild(referLink);
        referLink.click();
    }

    // All other browsers
    else { window.location.replace(url); }
</script>

这失败了,我不明白为什么。 PHP可以在此页面上,但不能在脚本标记之后。

任何想法??

5 个答案:

答案 0 :(得分:0)

如果您有重定向规则重写/ link / {number} / to link.php?id = {number}

<?php
//link.php

//Consider sanitize the input. (if it's number, use (int) casting for instance)
$linkid = $_GET['id'];

/*
 Get the affiliate url based on the link ID.
 If you're using DB or whatever.
*/
$url = get_affiliate_url($linkid);

header("Location: ".$url);
?>
  • 没试过。

答案 1 :(得分:0)

这是你用过的代码吗?我想知道你将如何在js函数中使用php变量。

相反,你应该将php变量作为php回显。

EX:

<script type="text/javascript">

        var url = "<?php echo $url_to_affiliate_website; ?>";

        // IE8 and lower fix
        if (navigator.userAgent.match(/MSIE\s(?!9.0)/))
        {
            var referLink = document.createElement("a");
            referLink.href = url;
            document.body.appendChild(referLink);
            referLink.click();
        }

        // All other browsers
        else { window.location.replace(url); }
    </script>

我认为这会对你有所帮助,除非我误解了你的要求。

答案 2 :(得分:0)

这是您尝试在JavaScript中嵌入PHP变量的方式。你必须这样做:

<?php
echo '<script type="text/javascript">
    var url = "' . $url_to_affiliate_website . '";
    ...
    </script>';
?>

或者这个:

// jump to the verbatim mode, aka not interpreted by the PHP parser
?>
<script type="text/javascript">
var url = "<?php echo $url_to_affiliate_website; ?>";
</script>
<?php // continue rest of the PHP code

答案 3 :(得分:0)

修改

我刚刚重新阅读你的帖子;我不确定JavaScript是否实际嵌入在您的文档或外部文件中,但如果它是嵌入式的,则执行重定向的文件需要被称为“index.php”而不是“index.html”才能进行要评估的PHP。同样,如果JavaScript位于外部文件中,则JavaScript文件而不是HTML文件将需要“.php”扩展名,并且包含在页面中,如下所示:

<script src="./javascript-file.php"></script>

对于知道页面被重定向的目标页面,他们可能会检查HTTP标头,并看到该页面是301从页面永久重定向的。您可以在重定向到关联企业之前阻止/删除这些标头。我需要看到更多的代码才能提供帮助。

由于您说PHP不能在脚本标记之后,我假设这是托管环境的限制。这是一个可能适合您的解决方案:

<div id="concealed" style="display:none;"><?php echo $url_to_affiliate_website; ?></div>

<script>
    var url = document.getElementById("concealed").innerHTML;

    // IE8 and lower fix
    if (navigator.userAgent.match(/MSIE\s(?!9.0)/))
    {
        var referLink = document.createElement("a");
        referLink.href = url;
        document.body.appendChild(referLink);
        referLink.click();
    }

    // All other browsers
    else { window.location.replace(url); }
</script>

答案 4 :(得分:0)

<?php
$url_to_affiliate_website = "http://affiliate.com/sniper.php?s=g&7=8&g=0"; 
?>

您确定 $ url_to_affiliate_website 的价值是您想要的网址吗? 也尝试以这种方式重写代码。并使用window.location     

// IE8 and lower fix
if (navigator.userAgent.match(/MSIE\s(?!9.0)/))
{
    var referLink = document.createElement("a");
    referLink.href = "<?=$url_to_affiliate_website;?>"; // note the = after ?
    document.body.appendChild(referLink);
    referLink.click();
}

// All other browsers
else { 
window.location = url;
}

还要确保在回复之前声明$ url_to_affiliate_website。并确认您的文件是否具有.php扩展名而不是.html

将文件保存为UTF-8,如果您使用Notepad ++,请单击编码 - &gt;在UTF8中编码然后保存文件并退出。