产品添加到购物篮后禁用重定向


8

当我从添加的东西categorybasket/cart它重定向我的basket/cart

搜索后,我发现可以通过以下方式在管理系统中启用此功能

Configuration > Sales | Checkout > After Adding a Product Redirect to Shopping Cart

现在,它重定向到主页。我不知道这是重定向中的错误吗?


不,默认的Magento设置不是这种情况。从详细信息页面或列表页面添加时,它完全可以正常工作。您是否在代码中进行了任何修改,或者试图从哪个页面进行修改?
Dexter 2014年

您可以检查日志files.system.log或exception.log文件吗?
Pradeep

我正在使用第三方主题。我已经在frontend / default / {theme_name} /template/product/list.phtml中进行了一些修改。当我从菜单中单击该页面时,该页面可以加载。
user9252 2014年

我已经完成了这个设置,以便添加到购物车后,点击它的重定向我同一页..
Sarfaraj Sipai

Answers:


8

如果您查看购物车控制器,app/code/core/Mage/Checkout/controllers/CartController.php您将找到该功能_goBack。这是Magento决定返回URL的地方。

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当您未将返回网址设置为参数并且未使用默认的重定向到购物车选项时发生的调用。

在该函数_getRefererUrl内部,如果引荐来源网址不是内部网址,则将检查引荐来源网址是否是内部网址,而不是使用基本网址。

我建议您的引荐来源网址是外部的,或者检查有问题。

看看是否Mage_Core_Controller_Varien_Action::_isUrlInternal要调试内部url。

问题是_isUrlInternal由于在基本url中具有端口而失败


我是Magento的新手,之前从未在Magengto调试过任何东西。它涉及什么过程,因此我可以调试此URL
user9252 2014年

@ user9252有一些方法可以执行此操作,我建议最简单的方法是在函数中添加几个var_dumps变量以查看发生了什么。
David Manners 2014年

我在$ returnUrl = $ this-> getRequest()-> getParam('return_url');之后进行调试调用 它是空白,没有任何建议。
user9252 2014年

1
我正在使用Bitnami,并使用默认设置。默认设置为192.168.1.20:80/magento。我要移除端口吗?
user9252 2014年

1
我已经从基本URL中删除了端口号:80。刷新缓存。现在,它按计划重定向回到类别列表页面。
user9252 2014年

4

除了david-manners的回答外,您可能还会在没有端口的情况下正确设置web/unsecure/base_urlweb/secure/base_url并遇到问题-但实际的应用程序虚拟主机(apache / nginx)监听的端口不是80/443,例如在清漆后面运行时。

这将导致\Mage_Core_Helper_Url::getCurrentUrl,例如用于添加base64编码的查询参数-通过_getRefererUrl将“非默认”端口作为url的一部分进行解码和使用。(例如http://www.domain.com:81/your-url.html

结果Mage_Core_Controller_Varien_Action::_isUrlInternal返回false ...

有关更多参考,请参见
http://erikeng.se/post/magento-behind-varnish.html

/server/318151/how-to-set-php-server-port-var-to-80-behind-varnish中介绍了一种干净而好的解决方案


1

尝试设置你的web/unsecure/base_urlweb/secure/base_url127.0.0.1到位的localhost。对我来说,它奏效了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.