Wenn Sie in die Wagensteuerung schauen, app/code/core/Mage/Checkout/controllers/CartController.php
finden Sie die Funktion _goBack
. Hier wird die Rückgabe-URL von Magento festgelegt.
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;
}
Der Abschnitt, nach dem Sie suchen, ist der Aufruf _getRefererUrl
dazu, wenn Sie die Rückgabe-URL nicht als Parameter festlegen und nicht die Standardoption zum Umleiten in den Warenkorb verwenden.
Innerhalb der Funktion wird _getRefererUrl
die Referrer-URL überprüft, um festzustellen, ob es sich um eine interne URL handelt, wenn sie nicht intern ist, als die Basis-URL verwendet wird.
Ich würde vorschlagen, dass entweder Ihre Referrer-URL extern ist oder dass mit der Prüfung etwas nicht stimmt.
Schauen Sie sich an Mage_Core_Controller_Varien_Action::_isUrlInternal
, um zu debuggen, ob die URL intern ist oder nicht.
Das Problem war, dass _isUrlInternal fehlschlug, weil der Port in der Basis-URL enthalten war