diff --git a/classes/Dispatcher.php b/classes/Dispatcher.php index a391eb37a..ba81cd3cd 100644 --- a/classes/Dispatcher.php +++ b/classes/Dispatcher.php @@ -325,7 +325,7 @@ class DispatcherCore if (!isset($this->routes[$routeID])) { $query = http_build_query($params); - return ($routeID == 'index') ? 'index.php'.(($query) ? '?'.$query : '') : 'index.php?controller='.$routeID.(($query) ? '&'.$query : ''); + return ($routeID == 'index') ? 'index.php'.(($query) ? '?'.$query : '') : 'index.php?controller='.$routeID.(($query) ? '&'.$query : ''); } $route = $this->routes[$routeID]; @@ -360,7 +360,7 @@ class DispatcherCore } // Build a classic url index.php?controller=foo&... else - $url = 'index.php?controller='.$route['controller'].(($queryParams) ? '&'.http_build_query($queryParams) : ''); + $url = 'index.php?controller='.$route['controller'].(($queryParams) ? '&'.http_build_query($queryParams) : ''); return $url; } diff --git a/classes/FrontController.php b/classes/FrontController.php index 1859275a1..5d6224c47 100755 --- a/classes/FrontController.php +++ b/classes/FrontController.php @@ -383,7 +383,7 @@ class FrontControllerCore { // $_SERVER['HTTP_HOST'] must be replaced by the real canonical domain - $canonicalURL = $this->context->link->getPageLink($this->php_self, $this->ssl, $this->context->language->id); + $canonicalURL = str_replace('&', '&', $this->context->link->getPageLink($this->php_self, $this->ssl, $this->context->language->id)); if (!Tools::getValue('ajax') && !preg_match('/^'.Tools::pRegexp($canonicalURL, '/').'([&?].*)?$/', (($this->ssl AND Configuration::get('PS_SSL_ENABLED')) ? 'https://' : 'http://').$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'])) { header('HTTP/1.0 301 Moved'); diff --git a/classes/Link.php b/classes/Link.php index 0027d4f01..9e60b5d91 100644 --- a/classes/Link.php +++ b/classes/Link.php @@ -311,7 +311,7 @@ class LinkCore $uri_path = Dispatcher::getInstance()->createUrl($controller); $url = ($ssl AND Configuration::get('PS_SSL_ENABLED')) ? Tools::getShopDomainSsl(true) : Tools::getShopDomain(true); $url .= __PS_BASE_URI__.$this->getLangLink($id_lang).ltrim($uri_path, '/'); - $url .= ($request ? ((strpos($url, '?') === false ? '?' : '&').trim($request)) : ''); + $url .= ($request ? ((strpos($url, '?') === false ? '?' : '&').trim($request)) : ''); return $url; } diff --git a/controllers/CMSController.php b/controllers/CMSController.php index 06b5c29f4..dad5140f2 100644 --- a/controllers/CMSController.php +++ b/controllers/CMSController.php @@ -39,7 +39,7 @@ class CmsControllerCore extends FrontController if (Configuration::get('PS_CANONICAL_REDIRECT')) { - if (Validate::isLoadedObject($this->cms) AND $canonicalURL = $this->context->link->getCMSLink($this->cms)) + if (Validate::isLoadedObject($this->cms) AND $canonicalURL = str_replace('&', '&', $this->context->link->getCMSLink($this->cms))) if (!preg_match('/^'.Tools::pRegexp($canonicalURL, '/').'([&?].*)?$/', Tools::getProtocol().$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'])) { header('HTTP/1.0 301 Moved'); @@ -47,7 +47,7 @@ class CmsControllerCore extends FrontController die('[Debug] This page has moved
Please use the following URL instead: '.$canonicalURL.''); Tools::redirectLink($canonicalURL); } - if (Validate::isLoadedObject($this->cms_category) AND $canonicalURL = $this->context->link->getCMSCategoryLink($this->cms_category)) + if (Validate::isLoadedObject($this->cms_category) AND $canonicalURL = str_replace('&', '&', $this->context->link->getCMSCategoryLink($this->cms_category))) if (!preg_match('/^'.Tools::pRegexp($canonicalURL, '/').'([&?].*)?$/', Tools::getProtocol().$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'])) { header('HTTP/1.0 301 Moved'); diff --git a/controllers/ManufacturerController.php b/controllers/ManufacturerController.php index 5ecc6e8bb..0ffc55f7f 100644 --- a/controllers/ManufacturerController.php +++ b/controllers/ManufacturerController.php @@ -40,7 +40,7 @@ class ManufacturerControllerCore extends FrontController { if (Validate::isLoadedObject($this->manufacturer)) { - $canonicalURL = $this->context->link->getManufacturerLink($this->manufacturer); + $canonicalURL = str_replace('&', '&', $this->context->link->getManufacturerLink($this->manufacturer)); if (!preg_match('/^'.Tools::pRegexp($canonicalURL, '/').'([&?].*)?$/', Tools::getProtocol().$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'])) { header('HTTP/1.0 301 Moved'); diff --git a/controllers/ProductController.php b/controllers/ProductController.php index d2349d5d0..a8cceb02e 100644 --- a/controllers/ProductController.php +++ b/controllers/ProductController.php @@ -56,7 +56,7 @@ class ProductControllerCore extends FrontController // $_SERVER['HTTP_HOST'] must be replaced by the real canonical domain if (Validate::isLoadedObject($this->product)) { - $canonicalURL = $this->context->link->getProductLink($this->product); + $canonicalURL = str_replace('&', '&', $this->context->link->getProductLink($this->product)); if (!preg_match('/^'.Tools::pRegexp($canonicalURL, '/').'([&?].*)?$/', Tools::getProtocol().$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'])) { header('HTTP/1.0 301 Moved'); diff --git a/controllers/SupplierController.php b/controllers/SupplierController.php index 01f9a9e53..26007ac32 100644 --- a/controllers/SupplierController.php +++ b/controllers/SupplierController.php @@ -43,7 +43,7 @@ class SupplierControllerCore extends FrontController { if (Validate::isLoadedObject($this->supplier)) { - $canonicalURL = $this->context->link->getSupplierLink($this->supplier); + $canonicalURL = str_replace('&', '&', $this->context->link->getSupplierLink($this->supplier)); if (!preg_match('/^'.Tools::pRegexp($canonicalURL, '/').'([&?].*)?$/', Tools::getProtocol().$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'])) { header('HTTP/1.0 301 Moved');