• записи
    4
  • комментариев
    9
  • просмотр
    541

Разница между redirect 301 и 302 о которой возможно вы не знаете

konorws

67 просмотров

Добрый день. 

Вот не так давно столкнулся с одной фичей 301 редиректа если честно я несколько часов не мог понять в чем прикол а потом все добрый дядя Google дал мне ответ.

 

С чего все началось.

Ко мне написал старый заказчик с просьбой поправить страницу заказа. А именно перекидать пользователя без авторизации на страницу самой авторизации (зачем ? это уже другая история скажу сразу у него движок не Opencart а самопис какой то). 
Тут долго думать не пришлось 3 строчки кода (Буду приводить код Opencart что бы было более понятно)
Ну вставил я этот код:

if(!$this->customer->isLogged()){
    $this->response->redirect($this->url->link('account/login'));
}

Ну думаю проверю на всякий случай. И вот скидаю куки и захожу на страницу заказа оп и все работает.)))) Думаю ладно попробую еще авторизацию пройти. 
Логинюсь на сайте - идем на страницу оформления - оп и я на странице авторизации с ошибкой доступа
 

Я немножко афигел.  Давай копать проврил код все нормально все верно. Убрал код из файла и оп ляля а Ридерект остался причем в любой ситуации перекидивает. 
Я начал колдовать искал убирал скидивал кеш и нифига.  
И тут я заглянул в файл редиректа и вот какую строчку я там обнаружил

header("HTTP/1.1 301 Moved Permanently"); 

Уточнил у заказчика откуда он там взялся (пришлось обяснить сначала что он значит и делает). Как оказалось им какая то СЕО прога сказала что на сайте есть 302 редиректы и это не правильно и они решили все перевести в 301.
Думаю окей ваши тараканы.  

 

Закомментил эту строчку проблема осталась. 

 

Начал гуглить, гуглить, гуглить, ...........

И на дном из тикетов поддержки Google Chrome я нашел ОТВЕТ:
Как оказалось браузеры кешируют 301 редирект и при повторном вызове УРЛ сразуже перенаправлять на кешированный УРЛ. 

Причем не только Google Chrome а и другие браузеры также.

 

Итоги:
Для внутришних редеректов сайта всегда используйте 302 редирект который используется в PHP по умолчанию.



0 Комментариев


Рекомендуемые комментарии

Комментариев нет

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти