Что вы будете делать, если при вводе URL или после нажатия на ссылку сервер выдает вам сообщение о системной ошибке ERROR 404 not found? Вы просто введете другой URL и навсегда покинете сайт на котором это произошло. Причем эта ошибка могла возникнуть как по вашей вине, так и по вине вебмастера сайта, но результат один - негативное мнение о самом сайте как таковом (да и об вебмастере тоже, никто же не обвинит себя в том, что он сам является этой ошибкой).
Итак, рассмотрим стандартные решения этой достаточно серьезной
проблемы. Пойдем двумя путями. Первый предполагает наличия у вас
доступа к конфигурации сервера, a второй просто наличие хостинга (места
где и расположен сайт).
Для начала необходимо внести в файл конфигурации, который отвечает
за обработку стандартных ошибок, следующую строку:
ErrorDocument 404 /"имя_файла".htm
"имя файла" - какое вам по душе.
Обратите внимание, как объяснил мне админ, который позволяет "двигать
файлики" у него на сервере, правда это происходит под его чутким
руководством, у разных типов серверов имя файла может отличаться.
Отсюда вывод читайте FAQ по вашему типу сервера и/или консультируйтесь
у админа. В моем случае этот файл конфигурации - srm.conf в каталоге
/conf. Сервер Apache 1.3.12 (не столь критично под какой системой работает
сервер, т.е. НТ или разновидности Юникса, если стоит Апач, то скорее всего
у вас будет этот же файл в той же директории). Кстати на момент начала моих
экспериментов этот файл был пуст!!! (Даже самые продвинутые админы не все
знают)
На самом деле для администрирования сервера Apache некоторое время назад действительно
использовались три файла, теперь же вся конфигурация сохраняется в файле httpd.conf, который содержит
закомментированные упоминания о двух "пережитках прошлого" - примечение Mixailo.
По секрету скажу за бутылочку хорошего пива, после трудного рабочего
дня, он (админ) продаст вам все секреты по настройке, которые знает сам,
самое обидное, что половина этих сведений бесполезна. (И вообще
любите и лелейте своих админов, без оной популяции лиц причастных к И-нету
мы вымрем первыми. Они то без нас еще проживут немного (хотя без пива разве
долго протянешь?)).
Если доступ к конфигурированию отсутствует, создаем файл .htaccess
в корневом каталоге и пишем в нем тоже самое.
Можно поступить иначе, сделать более простым способом. Создать в каждой
директории (папке, каталоге) свой файл index.htm (как известно, по умолчанию
грузится именно этот файл). Но это при условии грамотного расположения
содержимого сайта, обычно все сваливается в одну большую кучу и получается
каша-мала в корневой директории (я тоже, к моему великому сожалению
не являюсь исключеним из правил :-( )
Теперь рассмотрим структуру вышеописанных файлов:
1. При отсутствии на вашем сайте фреймов.
<html>
<head>
<META HTTP-EQUIV="refresh" content="10; URL=/index.htm" target="_top">
<!-- смотрим на страничку 10 секунд и отсылаем на index -->
<title>Куда ты завел нас, не видно ни зги </title>
<!-- так и хочется продолжить "Идите вперед не ..... мозги -->
</head>
<body>
Искомый документ не найден для перехода к заглавной странице
нажмите <a href="http://"ваш_url"/index.htm>здесь</a>
<!-- Вставляем на случай нераспознавания браузером мета тега.
Не распознают только доисторические или "альтернативные" -->
</body>
</html>
2.При использовании оных. (Чего я лично не могу понять, но по долгу службы знаю)
Можно сразу перенаправить посетителя на index, а можно, что гораздо
выгоднее (мы же крутые веб-мастера) попытаться отправить на основную страницу
фрейма выдавшую ошибку.
<html>
<head>
<META HTTP-EQUIV="refresh" content="10; URL=/index.htm" target="_top">
<!-- смотрим на страничку 10 секунд и отсылаем на index
в случае отсутствия поддержки JavaScript -->
<title>Куда ты завел нас, не видно ни зги </title>
<!-- так и хочется продолжить "Идите вперед не ..... мозги -->
<!-- Ну тут все по старому -->
<script language="javascript">
<!--//
// прячем все, что только можно, от старых браузеров,
// чтобы у него не снесло "башню"
function sendback()
{
var xtime = setTimeout('Susanin()', 8000);
// задали интевал времени в 8 секунд.
// чуть меньше, чем в refresh, а то кинет раньше времени
}
function Susanin()
{
var fname=window.self.name;
// определили имя фрейма или окна
if (fname == 'имя_фрейма1')
// посмотрели на совпадение с существующим именем
{
// если совпало, то тут и откроем основную страницу
window.open('/"имя_фрейма1".htm', 'имя_фрейма1');
// собственно открываем
};
// тут надо повторить проверку для всех известных фреймов
if (fname != 'имя_фрейма1' && fname != 'имя_фрейма2' ...)
// вместо троеточия перечисляем имена всех известных фреймов
//в комбинации с && fname !=
// Сравниваем на случай полного несовпадения
{
window.open('/index.htm', '_top');
// и грузим все заново
};
};
//-->
</script>
</head>
<body onload="sendback();" onerror="sendback();">
<!-- запускаем по загрузке или в случае ошибки -->
Искомый документ не найден, для перехода к заглавной странице
нажмите <a href="http://"ваш_url"/index.htm>здесь</a>
<!-- Вставляем на случай нераспознавания браузером мета тега.
Не распознают только доисторические или "альтернативные"-->
</body>
</html>
Как вы поняли, "имя_фрейма1" и "имя_фрейма2" - имена фреймов используемых вами,
только не надо писать их в кавычках :-).
Ну, вот и все - мы победили в этой нелегкой борьбе. Теперь от нас так просто
не отделаться. Даже череcчур любопытный посетитель будет наш.
Кстати, кроме текста предлагающего переход на индекс можно вставить и более
серьезную вещь. Существует целое направление в И-нете, посвященное
разработке такого рода страниц. Перед искушением создать что-то необычное
не устоял еще ни один из известных сайтов или дизайнеров. Я лично видел,
как небезызвестный Тема (Артемий Лебедев) рекламировал свое новое детище
при помощи баннерной рекламы (вот уж точно человеку заняться больше
не чем).