This page has been robot translated, sorry for typos if any. Original content here.

Обробка помилки 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
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> <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> <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:», то у вікні його поштового клієнта з'явиться вже заповнене повідомлення про помилку: чого немає, звідки на це "те, чого немає" посилання.

Примітки: В принципі, ви можете нічого перерахованого вище не робити. Нехай вчать англійську! ...