Summary of existing answers plus my own two cents:
You can use the header()
function to send a new HTTP header, but this must be sent to the browser before any HTML or text (so before the <!DOCTYPE ...>
declaration, for example).
header('Location: '.$newURL);
die() or exit()
header("Location: https://example.com/myOtherPage.php");
die();
Why you should use die()
or exit()
: The Daily WTF
Absolute or relative URL
Since June 2014 both absolute and relative URLs can be used. See RFC 7231 which had replaced the old RFC 2616, where only absolute URLs were allowed.
Status Codes
PHP's "Location"-header still uses the HTTP 302-redirect code, this is a "temporary" redirect and may not be the one you should use. You should consider either 301 (permanent redirect) or 303 (other).
Note: W3C mentions that the 303-header is incompatible with "many pre-HTTP/1.1 user agents. Currently used browsers are all HTTP/1.1 user agents. This is not true for many other user agents like spiders and robots.
HTTP Headers and the header()
function in PHP
You may use the alternative method of http_redirect($url);
which needs the PECL package pecl to be installed.
This function doesn't incorporate the 303 status code:
function Redirect($url, $permanent = false)
{
header('Location: ' . $url, true, $permanent ? 301 : 302);
exit();
}
Redirect('https://example.com/', false);
This is more flexible:
function redirect($url, $statusCode = 303)
{
header('Location: ' . $url, true, $statusCode);
die();
}
As mentioned header()
redirects only work before anything is written out. They usually fail if invoked inmidst HTML output. Then you might use a HTML header workaround (not very professional!) like:
<meta http-equiv="refresh" content="0;url=finalpage.html">
Or a JavaScript redirect even.
window.location.replace("https://example.com/");
How do I add SSH Keys to authorized_keys file?
How to implement Google reCaptcha V2
When should I use jQuery's document.ready function?
Find all elements on a page whose element ID contains a certain text using jQuery
How to run cron once, daily at 10pm
Run CRON job every day at specific time
CRON job to run on the last day of the month