到目前为止,我已经尝试了一个简单的页面,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可以在此页面上,但不能在脚本标记之后。
任何想法??
答案 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中编码然后保存文件并退出。