Должен ли клиент вести себя по-другому? Как?
Должен ли клиент вести себя по-другому? Как?
Ответы:
Статус 301 означает, что ресурс (страница) постоянно перемещен в новое местоположение. Клиент / браузер не должен пытаться запросить исходное местоположение, а теперь использовать новое местоположение.
Статус 302 означает, что ресурс временно находится где-то еще, и клиент / браузер должен продолжать запрашивать исходный URL.
Когда паук поисковой системы находит код состояния 301 в заголовке ответа веб-страницы, он понимает, что эта веб-страница больше не существует, он ищет заголовок местоположения в ответе, выбирает новый URL-адрес и заменяет проиндексированный URL-адрес новым, а также передает pagerank ,
Таким образом, поисковая система обновляет все проиндексированные URL-адреса, которые больше не существуют (найдено 301), с помощью нового URL-адреса, при этом трафик вашей старой веб-страницы будет сохранен, PageRank и перенаправлен на новый (вы не потеряете трафик старой веб-страницы).
Браузер: если браузер находит код состояния 301, он кэширует сопоставление старого URL-адреса с новым URL-адресом, клиент / браузер не будет пытаться запросить исходное местоположение, а с этого момента будет использовать новое местоположение, пока кэш не будет очищен.
Когда паук поисковой системы находит статус 302 для веб-страницы, он только временно перенаправляет на новое место и сканирует обе страницы. Старый URL веб-страницы все еще существует в базе данных поисковой системы, и он всегда пытается запросить старое местоположение и сканировать его. Клиент / браузер все равно будет пытаться запросить исходное местоположение.
Узнайте больше о том, как реализовать это в asp.net c # и как это повлияет на поисковые системы - http://www.dotnetbull.com/2013/08/301-permanent-vs-302-teilitary-status-code-aspnet -csharp-Implementation.html
Преимущественно 301 против 302 важен для индексации в поисковых системах, так как их сканеры учитывают это и передают PageRank при использовании 301.
См . Ответ Питера Ли для более подробной информации.
301 состоит в том, что запрашиваемому ресурсу был назначен новый постоянный URI, и любые будущие ссылки на этот ресурс должны выполняться с использованием одного из возвращенных URI.
302 заключается в том, что запрошенный ресурс временно находится под другим URI.
Поскольку перенаправление может иногда изменяться, клиент должен продолжать использовать Request-URI для будущих запросов.
Этот ответ кэшируется только в том случае, если он указан в поле заголовка Cache-Control или Expires.
<?php header("location: http://example.com/new.php"); ?>
и файл new.php - <?php echo 'I am new'; ?>
и перейдите по ссылке . Там будет перенаправить и отобразить текст «Я новичок». Затем замените код в old.php на <?php echo 'I am old'; ?>
и также перейдите по ссылке . Вы увидите текст «Я старый». Если вы выполнили редирект 301 в old.php, вы бы увидели текст «Я новичок» даже после изменений в коде old.php.
webcomic.com/latest
и перенаправляет на webcomic.com/some-comic-title
301, браузер всегда будет перенаправлять на «some-comic-title». Даже когда следующий комикс был опубликован, а «последний» теперь перенаправляет на «еще один комикс-заголовок» ... Вот где 302 будет лучше.
301 перенаправления кэшируются на неопределенный срок (по крайней мере, некоторые браузеры).
Это означает, что, если вы настроите 301, посетите эту страницу, вы не только будете перенаправлены, но и перенаправлены в кеширование.
При повторном посещении этой страницы ваш браузер * даже не удосуживается запросить этот URL-адрес, он просто переходит к цели перенаправления в кэше.
Единственный способ отменить 301 для посетителя с таким перенаправлением в Cache - это перенаправить обратно на исходный URL **. В этом случае браузер заметит цикл и, наконец, действительно запросит введенный URL.
Очевидно, что это не вариант, если вы решили 301 на Facebook или любой другой ресурс, который вы не полностью под контролем.
К сожалению, многие провайдеры хостинга предлагают в своем интерфейсе администратора функцию, называемую «перенаправление», которая выполняет перенаправление 301. Если вы используете это для временного перенаправления вашего домена на Facebook в качестве страницы, которая скоро появится, вы, по сути, облажались.
* По крайней мере, Chrome и Firefox, согласно Как долго браузеры кешируют HTTP 301? , Только что попробовал с Chrome 45. Редактировать: Safari 7.0.6 на Mac также кеширует, перезапуск браузера не помог (Ссылка говорит, что на Safari 5 на Windows это помогает.)
** Я попробовал javascript window.location = ''
, потому что это было бы решением, которое можно было бы применить в большинстве случаев - оно не работает. Это приводит к необнаруженной бесконечной петле. Тем header('Location: new.url')
не менее, PHP разорвать петлю
Итог: используйте 301, только если вы абсолютно уверены, что никогда не будете использовать этот URL снова. Обычно никогда не в корневом каталоге (example.com/)
Основная проблема с 301 - браузер будет кэшировать перенаправление, даже если вы отключили перенаправление с уровня сервера.
Всегда лучше использовать 302, если вы включаете перенаправление для короткого окна обслуживания.