404 Not Found: зламані посилання, м'які 404 і коли використати 410
404 Not Found означає, що сервер наразі не має представлення для цього URL, і нічого не каже про те, чи ресурс колись існував, чи повернеться. Саме в цій неоднозначності й суть: 404 може бути зламаним посиланням, яке варто виправити, сторінкою, яку ви навмисно прибрали, чи сторінкою, що працює бездоганно і лише прикидається відсутньою.
Що 404 каже, а чого - ні
За RFC 9110 404 означає, що вихідний сервер не знайшов поточного представлення для цільового ресурсу, або не бажає розкривати, що воно існує. З цього формулювання випливають дві деталі.
По-перше, 404 навмисно ухильний щодо постійності. Він не обіцяє, що URL так і лишиться мертвим, тому краулери довго продовжують повторювати запити до URL з 404. По-друге, 404 за замовчуванням можна кешувати за RFC 9111, тож кешувальний проксі чи CDN може зберегти помилку й продовжувати її віддавати вже після того, як ви виправили основну проблему. Завжди очищайте кеш після виправлення 404 і тестуйте наново.
404 - також нормальна, здорова відповідь. Кожен сайт її повертає. Уваги вартують ті, що на URL, які мають працювати, або на URL, до яких намагаються дістатися люди.
Зламане посилання чи справжнє видалення?
Ці два випадки виглядають ідентично за кодом статусу і потребують протилежної реакції.
Зламане посилання означає, що вміст існує, але URL неправильний. Звичайні причини - одруківка у внутрішньому посиланні, слаг, відредагований після публікації, розбіжність у регістрі, різниця в кінцевому слеші, міграція сайту, що змінила схему URL, чи деплой, що перестав видавати файл. Виправлення - відновити URL чи зробити для нього редирект.
Справжнє видалення означає, що вміст зник і не повернеться: закінчений термін вакансії, знятий з продажу товар, видалена сторінка акаунта. Тут 404 чесний, але лінивий, бо лишає краулерів повторювати запити, а відвідувачів - ні з чим.
Практичний спосіб їх розрізнити: чи існує еквівалентна сторінка десь на сайті сьогодні? Якщо так, робіть редирект. Якщо ні, обирайте між 404 і 410.
410 Gone, чесна альтернатива
410 каже, що ресурс був доступний і був навмисно видалений, і очікується, що ця умова постійна. Там, де 404 означає "не знайдено", 410 означає "видалено навмисно, перестань питати".
Використовуйте 410, коли ви навмисно виводите вміст з обігу і не маєте заміни. Це правильний сигнал для закінчених оголошень, знятих з продажу сторінок товарів і вмісту, прибраного з юридичних чи редакційних причин. Пошукові системи зазвичай сприймають 410 як сильніший, швидший сигнал видалення, ніж 404, хоча обидва зрештою прибирають URL. Як і 404, 410 за замовчуванням можна кешувати.
Не використовуйте 410 для нічого, що можете відновити, і не використовуйте його як загальний обробник для невідомих URL. Якщо існує придатна сторінка-заміна, редирект кращий за обидва коди, і вибір типу редиректу має значення: дивіться 301 проти 302, щоб обрати правильний.
М'які 404 і чому їх пропускають монітори
М'який 404 - це сторінка, що повертає 200 OK, поки її вміст каже, що ресурс відсутній. Це трапляється, коли застосунок ловить власну умову "не знайдено" і рендерить чемний шаблон "сторінку не знайдено" без встановлення коду статусу, або коли маршрут-заглушка обслуговує головну сторінку для кожного неспівпадаючого URL.
Пошукові системи й монітори аптайму тоді читають ту саму сторінку протилежно. Google перевіряє відрендерений вміст, розпізнає патерн відсутнього вмісту й класифікує це як м'який 404 у Search Console, тож URL не індексується, але бюджет сканування все одно на нього витрачається, а сигнал каламутний. Монітор, що порівнює коди статусу, бачить 200 і звітує сторінку як здорову, і саме так цілий розділ може віддавати текст "не знайдено" кожному відвідувачу, поки панель залишається зеленою.
Виправлення на сайті - повертати справжній 404 разом зі сторінкою помилки, що нічого не коштує і задовольняє обох читачів. Виправлення в моніторингу - перевіряти і вміст, і статус: перевіряти, що відома фраза зі справжньої сторінки присутня, тож сторінка, що повертає 200 з неправильним тілом, усе одно провалить перевірку.
Як виправляти 404 у правильному порядку
- Підтвердьте справжній код, а не видиму сторінку. Чемний екран помилки нічого не доводить:
Якщо це виводить 200 для сторінки, що читається як "не знайдено", у вас м'який 404.curl -sS -o /dev/null -w "%{http_code}\n" https://example.com/missing-page - З'ясуйте, які URL зачіпають. Логи доступу сервера й Search Console обидва перелічують URL з 404 разом з обсягом. Виправляйте за трафіком, а не за абеткою.
- Спершу виправте внутрішні посилання. 404, до якого дістаються з вашої власної навігації, повністю у вашому контролі і є найціннішим виправленням.
- Робіть редирект там, де існує реальний еквівалент. Зіставте старий URL із найближчою поточною сторінкою, по одному URL за раз. Уникайте редиректу всього на головну сторінку, яку пошукові системи теж вважають м'яким 404.
- Повертайте 410 для навмисних видалень без заміни, щоб краулери перестали повторювати запити.
- Зробіть сторінку 404 корисною. Пошук, головна навігація й популярні посилання повертають відвідувачів, яких втрачає гола сторінка помилки.
- Очистіть кеші й перетестуйте. Оскільки 404 можна кешувати, перевіряйте виправлений URL ззовні вашої мережі, а не лише з джерела.
Перевірка коду і вмісту разом
Редагування слага, оновлення плагіна чи зміна маршрутизації ламає набір URL, поки головна сторінка продовжує завантажуватися, тож нічого не сповіщає, і ніхто не помічає, доки трафік чи конверсії не впадуть. Запланована HTTP-перевірка на ваших важливих URL порівнює і код статусу, і очікуваний вміст сторінки, що ловить і справжній 404, і м'який 404 однаково. Про ширшу родину клієнтських кодів і про те, як відрізнити справжню помилку клієнта від неправильної конфігурації сервера, дивіться огляд 4xx.