HTTP-перенаправление: 301 (постоянный) против 302 (временный)

Предполагается ли, что клиент ведет себя по-другому? Как?

Ответ 1

Статус 301 означает, что ресурс (страница) постоянно перемещается в новое место. Клиент/браузер не должен пытаться запрашивать исходное местоположение, но использовать новое местоположение с этого момента.

Статус 302 означает, что ресурс временно находится где-то в другом месте, и клиент/браузер должен продолжать запрашивать исходный url.

Ответ 2

Когда поисковый робот находит код статуса 301 в заголовке ответа веб-страницы, он понимает, что эта веб-страница больше не существует, он ищет заголовок местоположения в ответ, выбирает новый URL-адрес и заменяет проиндексированный URL-адрес новым и также передайте pagerank.

Таким образом, поисковая система обновляет все индексированные URL-адреса, которые больше не существуют (301 найден) с новым URL-адресом, это сохранит ваш старый трафик веб-страницы, pagerank и переадресует его на новый (вы не потеряете трафик старой веб-страницы).

Браузер: если браузер находит код статуса 301, он кэширует сопоставление старого URL с новым URL-адресом, клиент/браузер не будет пытаться запрашивать исходное местоположение, но использовать новое местоположение с этого момента, если только кеш очищено.

enter image description here

Когда поисковый робот находит 302 статус для веб-страницы, он будет временно перенаправляться в новое место и обходить обе страницы. Старый URL веб-страницы по-прежнему существует в базе данных поисковой системы, и он всегда пытается запросить старое местоположение и выполнить сканирование. Клиент/браузер все равно попытается запросить исходное местоположение.

enter image description here

Подробнее о том, как реализовать его в asp.net С# и о том, что влияет на поисковые системы - http://www.dotnetbull.com/2013/08/301-permanent-vs-302-temporary-status-code-aspnet-csharp-Implementation.html

Ответ 3

В основном 301 против 302 важно для индексирования в поисковых системах, так как их сканеры учитывают это и переносят PageRank при использовании 301.

Подробнее см. Peter Lee.

Ответ 4

301 состоит в том, что запрашиваемому ресурсу был назначен новый постоянный URI, и любые будущие ссылки на этот ресурс должны выполняться с использованием одного из возвращенных URI.

302 заключается в том, что запрошенный ресурс временно находится под другим URI.

Поскольку перенаправление может иногда изменяться, клиент должен продолжать использовать Request-URI для будущих запросов.

Этот ответ кэшируется только в том случае, если он указан в поле заголовка Cache-Control или Expires.

Ответ 5

301 переадресации кэшируются неограниченно (по крайней мере, некоторыми браузерами).

Это означает, что если вы настроили 301, посетите эту страницу, вы не только перенаправляетесь, но и перенаправляетесь в кеширование.

Когда вы снова заходите на эту страницу, ваш браузер * даже не потрудился запросить этот URL-адрес, он просто переходит к цели кэширования перенаправления.

Единственный способ отменить 301 для посетителя с этим перенаправлением в кеше, перенаправляет обратно на исходный URL **. В этом случае браузер увидит цикл и, наконец, действительно запросит введенный URL.

Очевидно, что это не вариант, если вы решили 301 на facebook или любой другой ресурс, который вы не полностью контролируете.

К сожалению, многие хостинг-провайдеры предлагают функцию в своем интерфейсе администратора, просто называемую "перенаправление", которая перенаправляет 301. Если вы используете это, чтобы временно перенаправить свой домен на facebook как на скоростную страницу, вы в основном ввернуты.

* по крайней мере Chrome и Firefox, в соответствии с Как долго браузеры кэшируют HTTP 301?. Просто попробовал его с Chrome 45. Изменить: Safari 7.0.6 на Mac также кэшируется, перезапуск браузера не помог (ссылка говорит, что в Safari 5 на Windows это помогает.)

** Я попробовал javascript window.location = '', потому что это было бы решение, которое может быть применено в большинстве случаев - оно не работает. Это приводит к необнаруженному бесконечному циклу. Однако php header('Location: new.url') нарушает цикл

Bottom Line: использовать только 301s, если вы абсолютно уверены, что никогда больше не будете использовать этот URL. Обычно никогда в корневом каталоге (example.com/)

Ответ 6

Основная проблема с 301 - браузер кэширует перенаправление, даже если вы отключили перенаправление с уровня сервера.

Всегда лучше использовать 302, если вы разрешаете перенаправление для короткого окна обслуживания.