diff -r 5e7a0fedabdf -r 877f952ae2bd web/lib/Zend/Controller/Request/Http.php --- a/web/lib/Zend/Controller/Request/Http.php Thu Mar 21 17:31:31 2013 +0100 +++ b/web/lib/Zend/Controller/Request/Http.php Thu Mar 21 19:50:53 2013 +0100 @@ -14,9 +14,9 @@ * * @category Zend * @package Zend_Controller - * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) + * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License - * @version $Id: Http.php 23414 2010-11-20 10:56:11Z bittarman $ + * @version $Id: Http.php 24842 2012-05-31 18:31:28Z rob $ */ /** @see Zend_Controller_Request_Abstract */ @@ -390,7 +390,11 @@ public function setRequestUri($requestUri = null) { if ($requestUri === null) { - if (isset($_SERVER['HTTP_X_REWRITE_URL'])) { // check this first so IIS will catch + if (isset($_SERVER['HTTP_X_ORIGINAL_URL'])) { + // IIS with Microsoft Rewrite Module + $requestUri = $_SERVER['HTTP_X_ORIGINAL_URL']; + } elseif (isset($_SERVER['HTTP_X_REWRITE_URL'])) { + // IIS with ISAPI_Rewrite $requestUri = $_SERVER['HTTP_X_REWRITE_URL']; } elseif ( // IIS7 with URL Rewrite: make sure we get the unencoded url (double slash problem) @@ -545,13 +549,13 @@ * * @return string */ - public function getBaseUrl() + public function getBaseUrl($raw = false) { if (null === $this->_baseUrl) { $this->setBaseUrl(); } - return urldecode($this->_baseUrl); + return (($raw == false) ? urldecode($this->_baseUrl) : $this->_baseUrl); } /** @@ -612,31 +616,33 @@ public function setPathInfo($pathInfo = null) { if ($pathInfo === null) { - $baseUrl = $this->getBaseUrl(); - + $baseUrl = $this->getBaseUrl(); // this actually calls setBaseUrl() & setRequestUri() + $baseUrlRaw = $this->getBaseUrl(false); + $baseUrlEncoded = urlencode($baseUrlRaw); + if (null === ($requestUri = $this->getRequestUri())) { return $this; } - + // Remove the query string from REQUEST_URI if ($pos = strpos($requestUri, '?')) { $requestUri = substr($requestUri, 0, $pos); } - $requestUri = urldecode($requestUri); - - if (null !== $baseUrl - && ((!empty($baseUrl) && 0 === strpos($requestUri, $baseUrl)) - || empty($baseUrl)) - && false === ($pathInfo = substr($requestUri, strlen($baseUrl))) - ){ - // If substr() returns false then PATH_INFO is set to an empty string - $pathInfo = ''; - } elseif (null === $baseUrl - || (!empty($baseUrl) && false === strpos($requestUri, $baseUrl)) - ) { - $pathInfo = $requestUri; + if (!empty($baseUrl) || !empty($baseUrlRaw)) { + if (strpos($requestUri, $baseUrl) === 0) { + $pathInfo = substr($requestUri, strlen($baseUrl)); + } elseif (strpos($requestUri, $baseUrlRaw) === 0) { + $pathInfo = substr($requestUri, strlen($baseUrlRaw)); + } elseif (strpos($requestUri, $baseUrlEncoded) === 0) { + $pathInfo = substr($requestUri, strlen($baseUrlEncoded)); + } else { + $pathInfo = $requestUri; + } + } else { + $pathInfo = $requestUri; } + } $this->_pathInfo = (string) $pathInfo;