Error message

You are browsing documentation for drupal 7.x, which is not supported anymore. Read the updated version of this page for drupal 11.x (the latest version).

function request_path

Returns the requested URL path of the page being viewed.

Examples:

Return value

The requested Drupal URL path.

See also

current_path()

3 calls to request_path()
drupal_environment_initialize in includes/bootstrap.inc
Initializes the PHP environment.
url_alter_test_foo in modules/simpletest/tests/url_alter_test.module
Menu callback.
url_alter_test_url_inbound_alter in modules/simpletest/tests/url_alter_test.module
Implements hook_url_inbound_alter().

File

includes/bootstrap.inc, line 3198

Code

function request_path () {
 static $path;
 if (isset($path)) {
 return $path;
 }
 if (isset($_GET['q']) && is_string ($_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;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.