1

嘿伙计们,我正在尝试在我的标题中构建一个重定向脚本。它包含一个名为 $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;
}
}
?>
4

2 回答 2

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

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

Your $url contains a fully qualified domain name; the redirectURL is just a path. The two are never going to be equal. Try setting :

$url = $self;

(If I'm reading your code correctly)

于 2013-04-26T23:24:19.937 回答
0

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

前任;

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

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

于 2013-04-26T23:28:32.077 回答