PHP Header Redirect
How do I redirect with PHP script? How can I use a PHP script to redirect a user from the url they entered to a different web page/url?
Under PHP you need to use header() to send a raw HTTP header. Using headers() method, you can easily transferred to the new page without having to click a link to continue. This is also useful for search engines. Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include(), or require(), functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file.
HowTo redirect with PHP
You can easily redirect using following header("Location: ....) syntax:
<?php /* Redirect browser */ header("Location: http://theos.in/"); /* Make sure that code below does not get executed when we redirect. */ exit; ?>
The header() is used to send a raw HTTP/1.1 specification specific header. header() must be called before any actual output is sent, the following example will not work:
<?php $var="something"; echo "Hello world"; echo $var; /**************************************************** * Remember that header() must be called before any actual output is sent, * either by normal HTML tags, blank lines in a file, or from PHP. *****************************************************/ header("Location: http://theos.in/"); exit; ?>
PHP Redirect with HTTP Status Code
Create a sample function called movePage() in sitefunctions.php (note I'm not the author of the following I found it somewhere else on the Internet):
function movePage($num,$url){ static $http = array ( 100 => "HTTP/1.1 100 Continue", 101 => "HTTP/1.1 101 Switching Protocols", 200 => "HTTP/1.1 200 OK", 201 => "HTTP/1.1 201 Created", 202 => "HTTP/1.1 202 Accepted", 203 => "HTTP/1.1 203 Non-Authoritative Information", 204 => "HTTP/1.1 204 No Content", 205 => "HTTP/1.1 205 Reset Content", 206 => "HTTP/1.1 206 Partial Content", 300 => "HTTP/1.1 300 Multiple Choices", 301 => "HTTP/1.1 301 Moved Permanently", 302 => "HTTP/1.1 302 Found", 303 => "HTTP/1.1 303 See Other", 304 => "HTTP/1.1 304 Not Modified", 305 => "HTTP/1.1 305 Use Proxy", 307 => "HTTP/1.1 307 Temporary Redirect", 400 => "HTTP/1.1 400 Bad Request", 401 => "HTTP/1.1 401 Unauthorized", 402 => "HTTP/1.1 402 Payment Required", 403 => "HTTP/1.1 403 Forbidden", 404 => "HTTP/1.1 404 Not Found", 405 => "HTTP/1.1 405 Method Not Allowed", 406 => "HTTP/1.1 406 Not Acceptable", 407 => "HTTP/1.1 407 Proxy Authentication Required", 408 => "HTTP/1.1 408 Request Time-out", 409 => "HTTP/1.1 409 Conflict", 410 => "HTTP/1.1 410 Gone", 411 => "HTTP/1.1 411 Length Required", 412 => "HTTP/1.1 412 Precondition Failed", 413 => "HTTP/1.1 413 Request Entity Too Large", 414 => "HTTP/1.1 414 Request-URI Too Large", 415 => "HTTP/1.1 415 Unsupported Media Type", 416 => "HTTP/1.1 416 Requested range not satisfiable", 417 => "HTTP/1.1 417 Expectation Failed", 500 => "HTTP/1.1 500 Internal Server Error", 501 => "HTTP/1.1 501 Not Implemented", 502 => "HTTP/1.1 502 Bad Gateway", 503 => "HTTP/1.1 503 Service Unavailable", 504 => "HTTP/1.1 504 Gateway Time-out" ); header($http[$num]); header ("Location: $url"); } }
First include sitefunctions.php and than call movePage() as follows:
<?php @include("/path/to/sitefunctions.php"); /* Move page with 301 http status code*/ movePage(301,"http://www.cyberciti.biz/"); ?>
How do I test url redirection?
If you are using Apple OS X or Linux/Unix-like operating system, open the Terminal app and type curl command as follows:
Sample outputs:
$ curl -I your-url-here
$ curl -I www.cyberciti.biz/tips/
Sample outputs:
HTTP/1.1 301 Moved Permanently Server: nginx Date: Mon, 30 Dec 2013 22:31:37 GMT Connection: keep-alive Location: http://www.cyberciti.biz/ X-Galaxy: Andromeda-2
If you are on MS-Windows or do not want to use command line try redbot tool:
0 comments :