Як прибрати проміжний код 302 відповіді сервера

Вітаю читачів SEOBID.NET! Нещодавно зіткнувся з проблемою створення сторінки помилки 404. Точніше, зі створенням самої сторінки якраз проблем ніяких не було, а ось, налаштовуючи цю сторінку, я абсолютно випадково виявив, що є зайвий запит. Зайвий - це суто моя думка і, може бути, хтось так не вважає.

Як прибрати проміжний код 302 відповіді сервера

Ось ця ситуація мене і змусила задуматися, чому у мене формується інша відповідь. До речі, на WordPress такій ситуації не буде, так як там в .htaccess НЕ приписаний такий код - header ( «location: / 404»). Але я робив самопісний сайт на скрипті, і у нього в .htaccess була ця команда, що вважається взагалі-то хорошим тоном.

Тому я просто простежив за допомогою плагіна Firebug коди відповіді, і вирішив, що зайвий запит мені ні до чого. Повинен відразу видаватися код 404. Якщо ви будете використовувати плагін WebDeveloper, то але не покаже вам проміжні відповіді, і ви, відповідно, не побачите, де була допущена помилка.

Для SEO цей момент дуже важливий - так можна залишити на сайті багато проміжних запитів, які ви просто не помітите, але вони будуть виконуватися, і будуть гальмувати сайт. Плагін Firebug показує список всіх відповідей сервера, і на сайті я побачив наступну картинку:

Як прибрати проміжний код 302 відповіді сервера

Сервер видавав 302 редирект, і тільки потім перекладав запит на сторінку 404.html. Зазвичай в .htaccess сторінка помилки прописується ось так: ErrorDocument 404 /404.php або ErrorDocument 404/404. html - неважливо.

Але це не дуже поширене рішення, яке використовують далеко не всі. Тому, якщо робити так, як радять багато:

то header ( «location ... - віддає код 302 (якщо раніше не встановлювалася команда 201 або 3xx). Тут абсолютно неважливо, куди відправляє редирект, так як він в будь-якому випадку зайвий. Виходить, що за допомогою цієї команди (header location) правильно зробити 404 код неможливо. Прошу зрозуміти мене правильно J - зробити 404 можна, і працювати це буде, але буде працювати неправильно, з одним зайвим запитом. Тому в підсумку я вирішив використовувати в коді таку конструкцію:

Тобто, ми просто практично насильно (команда include_once) вставляємо сторінку 404.php. Зате ніяких проміжних кодів, і з таким побудовою все працює, як слід:

Як прибрати проміжний код 302 відповіді сервера

Схожі статті