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