站点中的所有 Ajax 请求(包括管理和核心功能)都被重定向到基础 url

All Ajax requests in site(including admin and core features) gets redirected to base url

过去几天我遇到了一个奇怪的问题,网站中的所有 ajax 请求突然被重定向到基础 URL,包括管理页面。

Ex 问题,用于自动完成。其中响应采用 json 格式,我之前返回 true。重定向问题开始后,这就搞砸了。我通过退出函数而不是返回 true 来修复它。因此,问题已通过某种方式针对自定义功能得到解决。

但我在少数领域使用 CK 编辑器。这些字段现在也搞砸了,显示主页 html 而不是我输入的原始页面(编辑回来时)。我发现 CK 编辑器页面也发生了 ajax 重定向。

我应该怎么做才能在全球范围内解决此问题?

似乎在某些初始化挂钩中可能发生了重定向。检查这一点的一种方法是调试 drupal_goto() 函数(假设重定向是使用它完成的)。最简单的方法是在 IDE 中使用调试器并检查整个调用堆栈。

另一种方法是在 drupal_goto() 函数中,就在

之前
header('Location: ' . $url, TRUE, $http_response_code);

你输入这段代码:

ob_start();
$backtrace = debug_backtrace();
foreach ($backtrace as $key => $value) {
  unset($backtrace[$key]['args']);
}
echo '<pre>'; print_r($backtrace);
$output = ob_get_clean();
watchdog('redirect_debug', 'Redirect to url: ' . $url. ' from ' . request_uri() . '. Call stack: ' .  $output, NULL);

然后,运行 ajax 请求并检查您的看门狗条目。如果重定向是由 drupal_goto() 完成的,您将看到所有调用堆栈,因此您可以看到从哪一行完成。

如何实际修复它,这实际上取决于从何处完成重定向。