Главная

Главная


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

Все было хорошо до тех пор, пока я случайно не увидел, что происходит на рабочем сервере. В ответ на ошибочный url браузер отобразил стандартную страницу IIS 7.0 "Page not found". IIS 7.0 page not found

Полез разбираться. На моем компьютере с Windows Vista и IIS 7.0 все работает отлично - возвращается именно моя страница, прием код возврата - 404. А вот на рабочем сервере с Windows Server 2008 и IIS 7.0 возвращается стандартная страница IIS.

В результате получается, что сначала ASP.NET приложение корректно обрабатывает 404 ошибку и возвращает ответ браузеру. После чего этот ответ перехватывает IIS, видит 404 код и заменяет его на на свое стандартное сообщение. Я не скажу точно, было ли это изначально в Windows Server 2008 или, скажем, появилось вместе с Service Pack 2 - но налицо вот такой неприятный сюрприз. Проявляется он только в IIS Integrated mode, в Classic mode все работает как и раньше. Кстати, это заставляет задуматься о том, что для качественного тестирования желательно иметь среду, аналогичную production server, а не Windows 2000 с IIS 6.0 :)

[читать дальше]

"А что тут сложного?" удивитесь вы. А потом, подумав "вряд ли он ответит 'ничего' и этим закончит статью", спросите - "а в чем подвох?".

Подвох конечно есть. Но давайте сначала посмотрим, что вообще можно сделать. Самый просто вариант - ничего. Ваш сайт честно отошлет пользователю код возврата 404 и тот увидит в браузере что-то вроде:

страница 404

Внешний вид зависит от конкретного браузера и настроек провайдера пользователя. Например, вместо страницы по умолчанию, пользователю могут показывать какую-то рекламу, а это еще обиднее :)

Разработчики сайтов конечно понимают, что так поступать нельзя. Если это не ваш постоянный посетитель - после такого ответа вы его потеряли. Поэтому на сайте создается специальная страница, которая выводится, когда никто не знает что делать с этом странным адресом. Она имеет такой же внешний вид как и остальные страницы сайта и должна сказать посетителю "Все замечательно и под контролем! Да, вот этой информации у нас нет, но вы можете поискать здесь, или перейти вот сюда".

Вот так это, например, выглядит на сайте "сами знаете кого":

страница 404

А теперь, посмотрим чуть дальше. Да, с пользователем мы разобрались. А вот что будет с поисковыми серверами? [читать дальше]