Улучшенная обработка 404 ошибки в Typo3

Начиная с версии 4.0.1 TYPO3 имеет солидный обработчик ошибок. В этом заслуга Дмитрия Дулепова - разработчика, и Мартина Кучера, который кго поддерживает. Хотя в новость на TYPO3.org только упоминает об этом как "Исправлены некоторые коды HTTP статуса" на самом деле это огромный шаг вперед. Вы должны беспокоиться? Не совсем. Я покажу вам, как сделать его использование оптимальным и предложить своим посетителям полезную информацию, а для технарей Дмитрий покажет вам, как это делается. Этот учебник предназначен для администраторов и редакторов TYPO3, которые хотят обеспечить посетителям своих сайтов сожательную страницу ошибки.

Старые добрые времена

Время от времени, мы скучаем за былыми временами, но не в разработке TYPO3. Я подразумеваю, что мы используем RealURL для создания красивых ссылок URL. RealURL является одним из тех улучшений, без которых мы не можем обойтись, так как он показывает нам, где мы находимся на веб-сайте в логическом ключе (если его правильно настроить). Давайте перейдем по несуществующему адресу страницы в TYPO3 3.8. Мы получим сообщения об ошибке в добром старомодном стиле.

Так, что теперь? Приятно узнать что страница не существует. Если в install tool настройки верны, сервер будет отдавать правильные заголовки (HTTP/1.x 404 Not Found) клиенту (вашему браузеру или Google), что позволяют оповестить их об отсутствии страницы. Я полагаю Google достаточно умен что бы использщовать эту информацию и не выводить этот URL в своей поисковой выдаче. 

Шаг в будущее

TYPO3 4.0 предоставляет "скрытую / недокументированную" особенность, которая позволяет определить собственную страницу 404 в виде файла или URL-адреса с помощью конфигурационных параметров ([FE] [pageNotFound_handling] = /404/). Одним из вариантов является создание "статического" HTML файла, указав путь к нему в конфигурации, добавляя перед ним "READFILE:", и TYPO3 покажет его как 404 страницу. Однако статические файлы не являются хорошим решением. Вы не можете отобразить, например, автоматически обновленную карту сайта с этим файлом. Это можно решить с помощью URL-адресов. Если вы установите URL (относительный или абсолютный) в pageNotFound_handling, TYPO3 будет отображать его как 404 страницу. Проблема в этом решением заключается в том, что TYPO3 (3.x и 4.0) перенаправляет нас на эту 404 страницу. Технически это означает, что поисковая система Google, как бы не в состоянии признать это как 404 ошибку. Так что никогда не удаляйте эту страницу из базы Google. Кроме того в разделе ошибок HTTP в вашей программе статистики (такой как AWStats ), Вы не увидите недостающих страниц на сайте.

Наконец не найдено

С версии TYPO3 4.0.1 возможно как и раньше, но настоящая 404 страница выбрасывается клиенту. Теперь Google знает что происходит и уберает страницу со своей базы данных. Приятно знать что возможно во время разработки баги вызывающие обработчик ошибок начинающте цикл в попытке найти 404 страницу которой тут нет и ведут тестовый сервер (как и производственный) к перегрузкам несколько раз. Теперь это все устранено и 404 показывается.

 

К сожалению, сообщение об ошибке не готово еще, но дает прекрасное указание что происходит. Конечно вы захотите вашу страницу 404 с полезной информацией и я покажу далее как это сделать.

Моя программа статистики также дает мне некоторую правильную обратную связь сейчас.

В таком случае вы также можете нажать на 404 и посмотреть, какие страницы попытались посетить.

Как сделать 404 страницу для вашего сайта

Для настройки 404 страницы для вашегосайта, идите в install tool и найдите настройку с названием [pageNotFound_handling]. Впишите URL по которому существует ваша 404 страница. Если страница на том же домене, это должен быть URL без доменного имени (на пр. /404/). если она на другом сервере, он должен быть с абсолютным путем.

Создайте спрятанную страницу с заголовком 404 в корне вашего сайта. Поддерживается несколько доменов на одной установке. Ві можете создать 404 страницу для каждого домена отдельно. Теперь обеспечте ваших посетителей полезной информацикей. Может быть, вы недавно перенесли целые части вашего сайта. Может быть, вы выбросили некоторые страницы случайно. Расскажите своим посетителям, пусть ваш посетитель знает, что происходит. Предоставьте ссылку на поисковую систему вашего сайта и, возможно, предоставьте карту сайта.

Под капотом

Когда TYPO3 определяет что страницы не существует, то запускает специальные функции то бы определить как в этой ситуации поступить. Наиболее часто происходит извлечение динамической страницы. С тех пор как страница ошибки может быть на другом домене, TYPO3 ставит надлежащий тэг <base /> на странице для того что бы изображения и ссылки отображались должным образом.

Одна проблема которая возникает при получении страницы ошибки это журналирование. Если вы используете Webalizer, вы можете указать игнорировать эту страницу. Однако если ваша программа анализа журналов не позволяет исключить какую то мтраницу вы можете исключить ее используя условная журналирование, как описано на сайте Apache (http://httpd.apache.org/docs/2.0/logs.html#conditional)

Для AWStats ві можете использовать следующую запись в вашем файле конфигурации для исключения страницы 404:

SkipFiles="/404/ REGEX[^\/typo3]"