Обработка ошибки 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>Извините, пива марки "<!--#echo var="REQUEST_URI"-->"нет!</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>Извините, файл "<? echo $REQUEST_URI ?>" не найден...</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:», то в окне его почтового клиента появится уже заполненное сообщение об ошибке: чего нет, откуда на это "то, чего нет" ссылка.
Примечания: В принципе, вы можете
ничего перечисленного выше не делать. Пускай
учат английский!...
Created/Updated: 25.05.2018