Чи повинен клієнт поводитись інакше? Як?
Чи повинен клієнт поводитись інакше? Як?
Відповіді:
Статус 301 означає, що ресурс (сторінку) переміщується назавжди на нове місце. Клієнт / браузер не повинен намагатися запитувати оригінальне місцеположення, але використовувати нове місце з цього моменту.
Статус 302 означає, що ресурс тимчасово розташований десь в іншому місці, і клієнт / браузер повинен продовжувати запитувати оригінальну URL-адресу.
Коли павук пошукової системи виявляє код статусу 301 у заголовку відповіді веб-сторінки, він розуміє, що ця веб-сторінка більше не існує, він шукає заголовок місцезнаходження у відповідь, вибирає нову URL-адресу та замінює індексовану URL-адресу новою, а також передає сторінкуrank .
Отже пошукова система оновлює всю індексовану URL-адресу, яка більше не існує (301 знайдено) з новою URL-адресою, це збереже ваш старий трафік веб-сторінки, перейде сторінка і перенаправить його на нову (ви не втратите трафік старої веб-сторінки).
Веб-переглядач: якщо браузер знайде код статусу 301, то він кешує відображення старої URL-адреси з новою URL-адресою, клієнт / браузер не буде намагатися запитувати вихідне місце розташування, але використовуватиме нове місце з цього моменту, якщо кеш не очищений.
Коли павук пошукової системи знайде статус 302 для веб-сторінки, він лише тимчасово перенаправить на нове місце і сканує обидві сторінки. Стара база URL-адрес веб-сторінки все ще існує в базі даних пошукової системи, і вона завжди намагається запросити старе місце розташування та сканувати його. Клієнт / браузер все ще намагатиметься запросити оригінальне місцезнаходження.
Детальніше про те, як його реалізувати в asp.net c # та який вплив на пошукові системи читайте тут: http://www.dotnetbull.com/2013/08/301-permanent-vs-302-temporary-status-code-aspnet -csharp-Implementation.html
301 полягає в тому, що запитуваному ресурсу було призначено новий постійний URI і будь-які майбутні посилання на цей ресурс повинні бути виконані за допомогою одного з повернених URI.
302 полягає в тому, що запитуваний ресурс тимчасово знаходиться під іншим URI.
Оскільки перенаправлення може бути змінено з певного часу, клієнт повинен продовжувати використовувати URI-запит для майбутніх запитів.
Ця відповідь підлягає кеш-пам'яті лише у випадку, якщо вона вказана в полі заголовка кеша або закінчується.
<?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 для відвідувача, який переспрямує кеш, - це перенаправлення назад до початкової 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')
порушує цикл
Підсумок: використовуйте лише 301, якщо ви абсолютно впевнені, що більше ніколи не будете використовувати цю URL-адресу. Зазвичай ніколи в кореневому режимі (example.com/)
Основна проблема із браузером 301 - це кеш-пам'ять перенаправлення, навіть якщо ви відключили перенаправлення з серверного рівня.
Завжди краще використовувати 302, якщо ви дозволяєте перенаправляти коротке вікно технічного обслуговування.