如果当前URL等于rediectURL什么都不做

时间:2013-04-26 23:14:18

标签: php variables redirect header

嘿伙计们,我正在尝试在标题中构建重定向脚本。 它包含一个名为$ redirect的变量,它等于0或1。

我想要做的是,如果变量等于1,则将用户重定向到指定页面。 这样可行。 我遇到的问题是,当它到达重定向的URL时,它会创建一个循环。 我尝试编写以下代码但它不起作用。我做错了什么?

<?php
$redirect = 1;
$host = $_SERVER['HTTP_HOST'];
$self = $_SERVER['PHP_SELF'];
$query = !empty($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : null;
$url = !empty($query) ? "http://$host$self?$query" : "http://$host$self";

$redirectURL = '/protest/cispa.php';
if ( $redirect === 1 ) {
if ( $url === $redirectURL ) {
die();
}
else {
header("Location: $redirectURL");
exit;
}}
?>

根据andrewsi的建议,我将代码更新为以下代码:

<?php
$redirect = 0;
$host = $_SERVER['HTTP_HOST'];
$self = $_SERVER['PHP_SELF'];
$query = !empty($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : null;
$url = $self;

$redirectURL = '/protest/cispa.php';
if ( $redirect === 1 ) {
if ( $url === $redirectURL ) {
}
else {
header("Location: $redirectURL");
exit;
}
}
?>

2 个答案:

答案 0 :(得分:0)

$url = !empty($query) ? "http://$host$self?$query" : "http://$host$self";

$redirectURL = '/protest/cispa.php';

您的$ url包含完全限定的域名; redirectURL只是一条路径。两者永远不会平等。尝试设置:

$url = $self;

(如果我正确地阅读你的代码)

答案 1 :(得分:0)

您可以在重定向的查询字符串中粘贴一个标记。然后,如果存在该标志,则不要添加重定向。

离;

http://www.yoursite.com/redirectedto.php?red=1

现在,如果设置了红色,我就不会添加重定向。