问题
我真的不明白我为什么要获得重定向循环。但我可以确定它发生在哪里,但我无法解释原因。这是self::redirect("?" . self::$queryString)
行给我带来问题。如果我删除它我可以导航很好但是当我把它放回去它再次给我错误。 (不知道这是否有问题,但我认为是因为当我删除该行时,它不再进行重定向循环。)
if (self::curPage() == "/clan.php" && isset($_GET['clan'])) {
self::$queryString = $_SERVER['QUERY_STRING'];
} elseif (self::curPage() == "/clan/profile.php") {
self::redirect("?" . self::$queryString);
}
我想要什么
我想要的基本上是添加以前的$queryString
(GET变量)。每当用户从 /clan.php 页面导航时,它们将被转移到新的URL,然后在URL的末尾连接先前的$queryString
。
如果您有办法通过改进,新方法或任何其他方式解决这个问题,我将非常感激。可以在评论中提出进一步的问题,我会尽可能快地和最好地回答这些问题。
我的想法
更改 a (link tag)
并将href值更改为当前/上一个GET变量/参数。除非也许这样,否则不要知道怎么做。这是我到目前为止唯一想到的部分。
var currentGET = <?php echo $_SERVER['QUERY_STRING']; ?>;
if (window.location.href == '/clan.php') {
$('a').attr('href', window.location.href + "?" + currentGET);
}
EXTRA
这是
curPage()
函数!
public static function curPage(){
$parts = parse_url(self::curPageURL());
return $parts["path"];
}
答案 0 :(得分:1)
以下两行肯定会导致重定向循环:
} elseif (self::curPage() == "/clan/profile.php") {
self::redirect("?" . self::$queryString);
这样做的原因是因为您正在检查当前URI是否为/clan/profile.php
,是否使用查询字符串将其重定向到自身,然后再次运行检查,即使查询字符串存在
这需要像这样来防止无限重定向:
} elseif (self::curPage() == "/clan/profile.php" && false == **QUERY STRING CONDITION**) {
self::redirect("?" . self::$queryString);
**QUERY STRING CONDITION**
需要替换为查询字符串的某种检查,表明URI是正确的,并且您不想重定向它们。