Обработка ошибки 404 Not Found The requested URL



Представьте себе ситуацию: ходит себе посетитель по вашему сайту, на ссылки кликает, окна открывает... И вдруг – видит, в одном – сообщение на бледном default фоне: Not Found
The requested URL /somepath/pivo.html was not found on this server.
Apache/1.3.X Server at www.some.net Port XX

Эта фраза, так много говорящая посетителю без знания английского, автоматически генерируется сервером, если запрошен документ с URL www.some.net/somepath/pivo.html, которого нет на сервере. Причины? Линк битый или букмарк устарел. Или посетитель набирал адрес вручную и очепятка вышла. Или пиво кончилось...

Особо вежливые вебмастера в таких случаях не любят пугать юзера бледным техническим текстом, а создают в каталоге сервера файл .htaccess (если его там еще нет), и помещают туда строку: ErrorDocument 404 /path/error.html

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

Если ваш хостинг позволяет использовать SSI (server-side includes) или php, то можно не только извиниться, но и напомнить посетителю, какого именно «Пива нет» (если он, посетитель, уже успел заблудиться в открытых окнах вашего сайта и в упор не помнит, с какой страницы линк привел его к «Ошибке 404»). И просить его отправить вебмастеру уже подготовленное письмо об ошибке.

Для этого файл error.shtml (*.shtml - стандартное расширение файлов, которые будут обрабатываться сервером на предмет SSI-инструкций) должен содержать: <p>Извините, пива марки &quot;<!--#echo var="REQUEST_URI"-->&quot;нет!</p> <p>Пишите в <a href="mailto:webmaster@some.net?subject=error404&body=<!--#echo var="REQUEST_URI"--> not found; link from <!--#echo var="HTTP_REFERER"-->">Книгу Жалоб</a>. Вебмастера уволят.</p>

Решение с помощью php (если он у провайдера хостинга есть): в .htaccess пишется

ErrorDocument 404 /path/error.php

В теле файла error.php (стандартно *.php-файлы обрабатываются на предмет php-инструкций ) соответственно: <p>Извините, файл &quot;<? echo $REQUEST_URI ?>&quot; не найден...</p> <p>Пишите в <a href="mailto:webmaster@ some.net?subject=error404&body=<? echo $REQUEST_URI ?> not found; link from <? echo $HTTP_REFERER ?>">Книгу Жалоб</a>. Вебмастер исправит.</p>

В обоих (*.shtml и *.php) случаях пользователь увидит извинение; а если кликнет на сылку «mailto:», то в окне его почтового клиента появится уже заполненное сообщение об ошибке: чего нет, откуда на это "то, чего нет" ссылка.

Примечания: В принципе, вы можете ничего перечисленного выше не делать. Пускай учат английский!...