Ошибка 404 (Страница не найдена) на сайте

Неожиданная ошибка 404 на сайте – пример из личной практики

Любой пользователь интернета хотя бы раз да встречал такие страницы, где под цифрой 404 чаще всего написано «Страница не найдена. Неправильно набран адрес или такой страницы не существует«. Самая частая причина данной проблемы — ошибка в написании адреса веб-страницы (действительно: достаточно допустить всего лишь одну опечатку, и сервер не распознает URL). Либо же страница была физически удалена с сайта и больше не существует.

Достаточно долгое время, около полугода я наполняю текстами карточки товара на одном крупном каталоге спецтехники. Суть такова: эти страницы давно созданы, на них есть изображения и характеристики техники – но нет подробных описаний. Заказчик размещает на Google Docs таблицы со ссылками на страницы сайта, я перехожу по ним, изучаю контент и далее пишу тексты.

До недавнего времени всё протекало гладко – но месяц назад, кликая по ссылкам из таблицы, я стал попадать на страницы, выдающие код ошибки 404. Поэтому сразу заподозрил, что заказчик передал мне «битые» ссылки.

Веб-страница с ошибкой 404 (Not Found)

Однако причина, по которой вылетала ошибка 404 на сайте клиента оказалась не совсем очевидной. Когда я зашёл в «админку» сайта, то увидел, что у «не найденной» страницы в поле «Окончание активности» прописана истекшая дата: 05.06.2026 – когда на календаре было уже 15 июня 2026 года. Таким образом, данная веб-страница (элемент инфоблока Торговый каталог в CMS 1С Битрикс) целых десять дней была скрыта для глаз посетителей сайта! Да и для SEO это не очень хорошо – ведь код 404 «говорит» поисковым ботам «страницы больше нет, удаляй её из индекса».

Страница с установленными дата начала и окончания активности

И тут возникает интересный вопрос: кто установил дату окончания активности? Ведь когда создаётся страница на сайте под управлением 1С Битрикс, она автоматически становится «активной» (видимой всем пользователям сайта), в параметрах страницы автоматически устанавливается флажок «Активность» – но при этом поля «Начало активности» и «Окончание активности» всегда остаются пустыми – ниже на скриншоте показан пример, как это бывает.

Страница без установленных дат начала и окончания активности

На моём первом скриншоте также видно, что в поле «Начало активности» установлена дата 06.06.2025 – то есть изначально страница должна быть доступной год (365 дней) и при наступлении 5 июня 2026 года скрытой «с глаз долой!». Первая догадка, которая пришла мне на ум: была некая акция, длиною в год, а по её завершении страницу с товаром следовало скрыть. Однако заказчик ответил, что их интернет-магазин никогда не устраивал и не устраивает любого рода акции – а кто и для каких страниц устанавливал даты окончания активности он не знает.

Тогда я проверил настройки, по умолчанию, инфоблока, к которому относится «скрытая» страница. В админ-панели переходим по пути Контент → Инфоблоки → Типы инфоблоков → нужный нам инфоблок → вкладка «Поля». И видим, что

  • флажок «Начало активности» не установлен – а, стало быть, это поле всегда будет пустым.
  • флажок «Окончание активности» также не установлен, и поле «Продолжительность активности элемента (дней)» также не заполнено – следовательно, любой элемент никогда не «протухнет».

Настройки по умолчанию полей инфоблока Торговый Каталог

Итак, все дефолтные настройки верные. Система Битрикс по умолчанию не требует заполнять эти поля и не показывает их как обязательные. Но никак не запрещает заполнять эти поля программно или при импорте.

И тогда я подумал: наверняка, до меня работал другой контент-менеджер сайта на «движке» Битрикс – и он вполне мог делать импорт из 1С! А если сайт синхронизируется с 1С (обмен по стандарту CommerceML), то дата окончания активности могла «прилетать» прямо из 1С:

  • В 1С у номенклатуры или у типов цен могут быть настроены «Периоды действия».
  • При выгрузке в Битрикс эти даты маппятся (сопоставляются) на поля ACTIVE_FROM (Начало активности) и ACTIVE_TO (Окончание активности).
  • Если в 1С кто-то настроил выгрузку цен или товаров с периодом «1 год», то на сайте у всех товаров, «приехавших» из 1С, автоматически проставлялись эти даты.

Исправляем причину ошибки 404

Ну хорошо, вероятную причину мы выяснили. Но теперь нам нужно найти все страницы (элементы инфоблока) с непустым полем «Окончание активности» – ведь пока что я обнаружил только одну такую страницу. А если таких страниц много, то все они – каждая в назначенный ей срок! – будут скрываться и выдавать ошибку доступа 404.

Первый шаг позволит увидеть список всех таких страниц в админке.

  • Для этого переходим в Магазин → Каталоги товаров → нужный нам Каталог товаров → Товары и разделы.
  • Затем в поле «Фильтр + поиск» снимаем «Верхний уровень» – и тогда будут показываться не только папки, но и страницы(элементы) каталога.
  • В настройках списка (иконка «шестерёнка) установим флажок «Окончание активности». Далее в расширенных настройках фильтра поиска также выберем аналогичный флажок – а для окончания активности в выпадающем списке выберем «Диапазон», но первое поле оставим пустым, а во второе введём дату «с запасом» на много лет вперёд (я выбрал 31.12.2030 и не пожалел – почему? читайте дальше!).
  • Добавим ещё одно поле (ссылка «Добавить поле») – «Раздел», а значение для него выберем «(любой)». Это гарантирует, что мы увидим товары из всех разделов каталога, а не только из одной какой-то папки.
  • Теперь нажмём на кнопку «Найти» — и увидим только те товары, у которых заполнено поле «Окончание активности».

Настройка вывода списка элементов в админ-панели сайта 1С Битрикс

Настройка вывода списка элементов в админ-панели сайта 1С Битрикс

Настройка вывода списка элементов в админ-панели сайта 1С Битрикс

Настройка фильтра поиска в админ-панели сайта 1С Битрикс

Настройка фильтра поиска в админ-панели сайта 1С Битрикс

Настройка фильтра поиска в админ-панели сайта 1С Битрикс

Найденные страницы с установленной датой окончания активности

В итоге я обнаружил 18 таких страниц. А у одной действительно дата окончания активности была 31 декабря 2030 года – как же метко я угадал!

Страница с установленной датой окончания активности

А как теперь «обнулить» поле «Окончание активности» у найденных страниц? Сделаем экспорт элементов нужного нам торгового каталога:

  • Контент → Инфоблоки → Экспорт → CSV.
  • В настройках экспорта, кроме двух обязательных полей «Внешний код» и «Название», не забываем выбрать поле «Окончание активности (время)». Все остальные не нужны.
  • Экспортируем каталог в файл *.csv
  • Открываем файл в Excel, выполняем сортировку данных (Данные – Сортировать…) по столбцу IE_ACTIVE_TO – находим все непустые строки в этом столбце, удаляем из них все даты.
  • По желанию, все остальные строки таблицы можно безболезненно удалить.
  • Выполняем импорт отредактированного файла *.csv: Контент → Инфоблоки → Импорт → CSV.

Выбор полей для экспорта в CSV файл

Код 404 «Not Found» на страницах с истекшим «сроком годности»?

Мда, пример из моей практики явно неоднозначный… И потому не менее важен вопрос: логично ли для страниц с истекшей датой активности (неактивных) показывать код состояния HTTP 404 с сообщением «Страница не найдена. Неправильно набран адрес или такой страницы не существует»? Ведь, как мы выяснили,

  • URL всех этих веб-документов заказчик передал мне верные,
  • все эти страницы реально физически существуют – просто они скрыты.

Как я сказал ранее, ошибка 404 в данном случае вредна, с точки зрения SEO:

  • 404 сообщает поисковикам: «страница удалена с сайта или же её вообще никогда не было – так удали её и из индекса»
  • Все накопленные позиции страницы в поиске и внешние ссылки на неё обнуляются
  • Если страница снова станет активной — придётся начинать с нуля.

Возможно, лучшим решением будет взамен 404 (Not Found) сохранять код 200 OK, но показывать сообщение «Товар больше не доступен» или «…производство временно приостановлено» – а также, вдобавок, кнопку «Сообщить о поступлении» и блок «Похожие товары». Ибо состояние 404 означает действительно удалённые страницы – но никак не скрытые.

Другой возможный вариант – сделать редирект 301 Moved Permanently на родительскую категорию или похожий товар.

В любом случае, причина ошибки 404 на данном сайте клиента случилась неожиданная – никто не предполагал её появление. А какой вариант ответа выбрали бы вы? – поделитесь в комментариях.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *