[英]How to hide actual link but not alert the affiliate that the link came from a redirected link?
到目前为止,我已经尝试了一个简单的页面,该页面使用id(domain.com/link/1234/)重定向了301 php。 然后,我尝试了将相同的php重定向(转发给id)到一个使用id到uri的php页面,以使用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可以在此页面上,但不能在script标记之后。
有任何想法吗??
如果您有一个重定向规则,将/ link / {number} /重写为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);
?>
这是您使用的代码吗? 我想知道您将如何在js函数中使用php变量。
相反,您应该将php变量作为php回显。
例如:
<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>
我认为这将对您有所帮助,除非我误解了您的要求。
这是您尝试将PHP变量嵌入JavaScript的方式。 您必须执行以下任一操作:
<?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
编辑
我只是重新阅读了您的帖子; 我不确定JavaScript是否实际嵌入文档或外部文件中,但是如果嵌入了JavaScript,则进行重定向的文件将需要称为“ index.php”而不是“ index.html”,以便要评估的PHP。 同样,如果JavaScript在外部文件中,则JavaScript文件而不是HTML文件将需要扩展名“ .php”并包含在页面中,如下所示:
<script src="./javascript-file.php"></script>
至于目标页面,知道该页面已被重定向,他们可能正在检查HTTP标头,并发现该页面已从您的页面永久重定向到301。 在重定向到会员之前,您可以防止/删除这些标头。 我需要查看更多的代码才能提供帮助。
既然您说PHP不能放在script标签之后,所以我假设这是托管环境的限制。 这是一个可能适合您的解决方案:
<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>
<?php
$url_to_affiliate_website = "http://affiliate.com/sniper.php?s=g&7=8&g=0";
?>
您确定给$ url_to_affiliate_website的值就是您想要的url吗? 也尝试以这种方式重写您的代码。 并改用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 ++,则单击“编码”->“在UTF8中编码”,然后保存文件并退出。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.