Не удаляется и не меняется редирект в Laravel

 

Пришлось столкнуться с небольшим нюансом 301-го редиректа, с которым ранее не приходилось сталкиваться.

Проблема заключалась в следующем: при прописывании 301 редиректа в файле роутов /routes/web.php

       //файл роутов /routes/web.php

    // 301 редирект со страницы page1 на страницу page2    
   Route::redirect('/page1', '/page2', 301);
  

Редирект работает нормально, при заходе на /page1 нас перекидывает на /page2. После этого что меняем, к примеру так

       //файл роутов /routes/web.php

    // 301 редирект со страницы page1 на страницу page3    
   Route::redirect('/page1', '/page3', 301);
  

И этот редирект не работает а /page1 снова перебрасывает на страницу /page2 вместо страницы /page3

Оказалось что при 301 редиректе переадресация кешируется и запоминается браузером, при чем ctrl+F4 (перезагрузка страницы с обновлением кеша) не убивает кеш переадресации. А помогает здесь только полное удаление всех кешей в настройках браузера.

А чтобы переадресации не кешировались браузером можно использовать 302 редирект.

       //файл роутов /routes/web.php

    // 301 редирект со страницы /page1 на страницу /page3    
   Route::redirect('/page1', '/page3', 302);
  

По незнанию этого нюанса можно потратить много времени на поиск возможных причин: удалять кеш роутов Laravel, проверять генерируемые роуты Laravel и совершать прочие ненужные телодвижения.

Кейсы