The PHP global variable $_SERVER['PATH_INFO']
contains the path suffixed to a PHP script, if I would call the URL:
http://domain.ext/path/to/script.php/foo/bar.htm?a=b&c=d
Then $_SERVER['PATH_INFO']
would contain:
/foo/bar.htm
Traditionaly the $_GET
variables are used for certain parameters like a page to display:
http://domain.ext/page.php?page=about.htm
This method is easy to program, but not only looks strange, but also is very search engine unfriendly. Most searchengines ignore the QueryString (the part of the URL after the ?
). And therefor would index the first page.php?page=x
they would find and ignore the rest.
Some searchengines like Google do not ignore the query string, but would give a page without using a querystring for different content a way higher ranking.
Parsing the $_SERVER['PATH_INFO']
is relatively easy, this code would do most of the stuff just fine:
if (!isset($_SERVER['PATH_INFO'])){ $pathbits= array(''); }else{ $pathbits = explode("/", $_SERVER['PATH_INFO']); }
The $pathbits
array would always contain /
as first element if a path info was provided, otherwise it will be an empty array.
Here is a quite simple example which parses the path info to decide which file to include:
<?php if (!isset($_SERVER['PATH_INFO'])){ $pathbits= array(''); }else{ $pathbits = explode("/", $_SERVER['PATH_INFO']); } if (!isset($pathbits[1]) || $pathbits[1] == ""){ $page = "default" }else{ $page = basename($pathbits[1]); } $file = "./pages/{$page}.php"; if (!is_file($file)){ echo "File not found"; }else{ require $file; } ?>