Jika Anda melihat pengontrol keranjang, app/code/core/Mage/Checkout/controllers/CartController.php
Anda akan menemukan fungsinya _goBack
. Di sinilah url kembali diputuskan oleh 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;
}
Bagian yang Anda cari adalah panggilan untuk _getRefererUrl
ini terjadi ketika Anda tidak menetapkan url kembali sebagai parameter dan tidak menggunakan opsi pengalihan default ke keranjang.
Di dalam fungsi _getRefererUrl
url pengarah diperiksa untuk melihat apakah itu adalah url internal, ketika itu tidak internal daripada url dasar yang digunakan.
Saya menyarankan agar url referer Anda eksternal atau ada yang salah dengan cek.
Coba lihat Mage_Core_Controller_Varien_Action::_isUrlInternal
untuk debug jika url internal atau tidak.
Masalahnya adalah _isUrlInternal gagal karena memiliki port di url dasar