重定向到另一個 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;