Якщо ви стикнулися з неочікуваним 301 або 302 редіректом у Magento 2 і не знаєте чому він стається та який код його викликає, ви можете легко це зясувати тимчасово відредагувавши наступні файли:

/vendor/magento/framework/HTTP/PhpEnvironment/Response.php
/vendor/magento/framework/Controller/Result/Redirect.php

Відкрийте Response.php та додайте на початок функції setRedirect такий рядок:

var_dump($url); \Magento\Framework\Debug::backtrace(false, true, false); exit();

Приклад:

public function setRedirect($url, $code = 302)
{
    var_dump($url); \Magento\Framework\Debug::backtrace(false, true, false); exit();
    $this->setHeader('Location', $url, true)
        ->setHttpResponseCode($code);

    return $this;
}

Тепер відкрийте другий файл Redirect.php і після кожного рядка в якому ви бачите:

$this->url =

додайте

var_dump($this->url); \Magento\Framework\Debug::backtrace(false, true, false); exit(); 

Приклад:

public function setRefererUrl()
{
    $this->url = $this->redirect->getRefererUrl();
    var_dump($this->url); \Magento\Framework\Debug::backtrace(false, true, false); exit(); 
    return $this;
}

public function setRefererOrBaseUrl()
{
    $this->url = $this->redirect->getRedirectUrl();
    var_dump($this->url); \Magento\Framework\Debug::backtrace(false, true, false); exit(); 
    return $this;
}

public function setUrl($url)
{
    $this->url = $url;
    var_dump($this->url); \Magento\Framework\Debug::backtrace(false, true, false); exit(); 
    return $this;
}

public function setPath($path, array $params = [])
{
    $this->url = $this->urlBuilder->getUrl($path, $this->redirect->updatePathParams($params));
    var_dump($this->url); \Magento\Framework\Debug::backtrace(false, true, false); exit(); 
    return $this;
}

Збережіть зміни, та відкрийте сторінку яка викликає неочікуваний редірект. Ви повинні побачити дебаг-бектрейс (debug backtrace).

Якщо ж ви не бачите його, це може означати, що редірект провокується не кодом Magento, а наприклад налаштуваннями вебсервера, або кодом  третьостороннього модуля, який використовує не рекомендовані практики програмування на Magento.