Created
January 23, 2012 23:12
-
-
Save thirdender/1666247 to your computer and use it in GitHub Desktop.
Code to get current URL after Apache redirect (taken from Drupal's bootstrap.inc)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function request_path() { | |
static $path; | |
if (isset($path)) { | |
return $path; | |
} | |
if (isset($_GET['q'])) { | |
// This is a request with a ?q=foo/bar query string. $_GET['q'] is | |
// overwritten in drupal_path_initialize(), but request_path() is called | |
// very early in the bootstrap process, so the original value is saved in | |
// $path and returned in later calls. | |
$path = $_GET['q']; | |
} | |
elseif (isset($_SERVER['REQUEST_URI'])) { | |
// This request is either a clean URL, or 'index.php', or nonsense. | |
// Extract the path from REQUEST_URI. | |
$request_path = strtok($_SERVER['REQUEST_URI'], '?'); | |
$base_path_len = strlen(rtrim(dirname($_SERVER['SCRIPT_NAME']), '\/')); | |
// Unescape and strip $base_path prefix, leaving q without a leading slash. | |
$path = substr(urldecode($request_path), $base_path_len + 1); | |
// If the path equals the script filename, either because 'index.php' was | |
// explicitly provided in the URL, or because the server added it to | |
// $_SERVER['REQUEST_URI'] even when it wasn't provided in the URL (some | |
// versions of Microsoft IIS do this), the front page should be served. | |
if ($path == basename($_SERVER['PHP_SELF'])) { | |
$path = ''; | |
} | |
} | |
else { | |
// This is the front page. | |
$path = ''; | |
} | |
// Under certain conditions Apache's RewriteRule directive prepends the value | |
// assigned to $_GET['q'] with a slash. Moreover we can always have a trailing | |
// slash in place, hence we need to normalize $_GET['q']. | |
$path = trim($path, '/'); | |
return $path; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment