Якщо ви зіткнулися з неочікуваним перенаправленням 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 та додайте це:
var_dump($this->url); \Magento\Framework\Debug::backtrace(false, true, false); exit();
після кожного рядка, що містить:
$this->url =
Приклад:
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;
}
Збережіть зміни та відкрийте сторінку, яка викликає неочікуване перенаправлення. Ви повинні побачити зворотне трасування налагодження з інформацією про рядок коду, що викликає перенаправлення.
Якщо ви його не бачите, це означає, що перенаправлення спричинене не кодом Magento, а налаштуваннями веб-сервера або кодом стороннього модуля, який використовує нерекомендовані практики програмування Magento.