Если вы посмотрите на контроллер корзины, app/code/core/Mage/Checkout/controllers/CartController.php
вы найдете функцию _goBack
. Вот где обратный URL-адрес решает Magento.
protected function _goBack()
{
$returnUrl = $this->getRequest()->getParam('return_url');
if ($returnUrl) {
if (!$this->_isUrlInternal($returnUrl)) {
throw new Mage_Exception('External urls redirect to "' . $returnUrl . '" denied!');
}
$this->_getSession()->getMessages(true);
$this->getResponse()->setRedirect($returnUrl);
} elseif (!Mage::getStoreConfig('checkout/cart/redirect_to_cart')
&& !$this->getRequest()->getParam('in_cart')
&& $backUrl = $this->_getRefererUrl()
) {
$this->getResponse()->setRedirect($backUrl);
} else {
if (($this->getRequest()->getActionName() == 'add') && !$this->getRequest()->getParam('in_cart')) {
$this->_getSession()->setContinueShoppingUrl($this->_getRefererUrl());
}
$this->_redirect('checkout/cart');
}
return $this;
}
Раздел, который вы ищете, это вызов, который _getRefererUrl
происходит, когда вы не устанавливаете URL-адрес возврата в качестве параметра и не используете опцию перенаправления по умолчанию в корзину.
Внутри функции _getRefererUrl
проверяется ссылка на URL, чтобы увидеть, является ли она внутренней, если она не внутренняя, чем используется базовая ссылка.
Я бы предположил, что ваш URL-адрес реферера является внешним или что-то не так с проверкой.
Посмотрите на Mage_Core_Controller_Varien_Action::_isUrlInternal
отладку, если URL-адрес является внутренним или нет.
Проблема заключалась в том, что _isUrlInternal не работал из-за наличия порта в базовом URL