--- 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;