重定向到另一个 URL

你可以使用 header() 函数指示浏览器重定向到其他 URL:

$url = 'https://example.org/foo/bar';
if (!headers_sent()) { // check headers - you can not send headers if they already sent
  header('Location: ' . $url);
  exit; // protects from code being executed after redirect request
} else {
  throw new Exception('Cannot redirect, headers already sent');
}

你还可以重定向到相对 URL(这不是官方 HTTP 规范的一部分,但它适用于所有浏览器):

$url = 'foo/bar';
if (!headers_sent()) {
  header('Location: ' . $url);
  exit;
} else {
  throw new Exception('Cannot redirect, headers already sent');
}

如果已发送标头,你也可以发送 meta refresh HTML 标签。

警告: 元刷新标记依赖于客户端正确处理 HTML,有些则不会这样做。通常,它仅适用于 Web 浏览器。另外,请考虑如果已发送标头,则可能存在错误,这应该会触发异常。

对于忽略元刷新标记的客户端,你还可以打印用户单击的链接:

$url = 'https://example.org/foo/bar';
if (!headers_sent()) {
  header('Location: ' . $url);
} else {
  $saveUrl = htmlspecialchars($url); // protects from browser seeing url as HTML
  // tells browser to redirect page to $saveUrl after 0 seconds
  print '<meta http-equiv="refresh" content="0; url=' . $saveUrl . '">';
  // shows link for user
  print '<p>Please continue to <a href="' . $saveUrl . '">' . $saveUrl . '</a></p>';
}
exit;