Nếu bạn nhìn vào bộ điều khiển giỏ hàng, app/code/core/Mage/Checkout/controllers/CartController.php
bạn sẽ tìm thấy chức năng _goBack
. Đây là nơi url trả lại được quyết định bởi 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;
}
Phần bạn đang tìm kiếm là cuộc gọi đến _getRefererUrl
điều này xảy ra khi bạn không đặt url trả về làm tham số và không sử dụng tùy chọn chuyển hướng mặc định sang giỏ hàng.
Bên trong chức năng _getRefererUrl
, url của người giới thiệu được kiểm tra để xem đó có phải là url nội bộ hay không, khi đó nó không phải là nội bộ so với url cơ sở được sử dụng.
Tôi sẽ đề nghị rằng url giới thiệu của bạn là bên ngoài hoặc có gì đó không đúng với kiểm tra.
Có một cái nhìn Mage_Core_Controller_Varien_Action::_isUrlInternal
để gỡ lỗi nếu url là nội bộ hay không.
Vấn đề là _isUrlI Internalal đã thất bại vì có cổng trong url cơ sở