protected function prepareRequestUri() {
$requestUri = '';
if ($this->headers
->has('X_ORIGINAL_URL')) {
// IIS with Microsoft Rewrite Module
$requestUri = $this->headers
->get('X_ORIGINAL_URL');
$this->headers
->remove('X_ORIGINAL_URL');
$this->server
->remove('HTTP_X_ORIGINAL_URL');
$this->server
->remove('UNENCODED_URL');
$this->server
->remove('IIS_WasUrlRewritten');
}
elseif ($this->headers
->has('X_REWRITE_URL')) {
// IIS with ISAPI_Rewrite
$requestUri = $this->headers
->get('X_REWRITE_URL');
$this->headers
->remove('X_REWRITE_URL');
}
elseif ($this->server
->get('IIS_WasUrlRewritten') == '1' && $this->server
->get('UNENCODED_URL') != '') {
// IIS7 with URL Rewrite: make sure we get the unencoded url (double slash problem)
$requestUri = $this->server
->get('UNENCODED_URL');
$this->server
->remove('UNENCODED_URL');
$this->server
->remove('IIS_WasUrlRewritten');
}
elseif ($this->server
->has('REQUEST_URI')) {
$requestUri = $this->server
->get('REQUEST_URI');
// HTTP proxy reqs setup request uri with scheme and host [and port] + the url path, only use url path
$schemeAndHttpHost = $this
->getSchemeAndHttpHost();
if (strpos($requestUri, $schemeAndHttpHost) === 0) {
$requestUri = substr($requestUri, strlen($schemeAndHttpHost));
}
}
elseif ($this->server
->has('ORIG_PATH_INFO')) {
// IIS 5.0, PHP as CGI
$requestUri = $this->server
->get('ORIG_PATH_INFO');
if ('' != $this->server
->get('QUERY_STRING')) {
$requestUri .= '?' . $this->server
->get('QUERY_STRING');
}
$this->server
->remove('ORIG_PATH_INFO');
}
// normalize the request URI to ease creating sub-requests from this request
$this->server
->set('REQUEST_URI', $requestUri);
return $requestUri;
}