The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Генерация cgi-скриптом ошибки 404 для поискового робота"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы WEB технологии (Public)
Изначальное сообщение [ Отслеживать ]

"Генерация cgi-скриптом ошибки 404 для поискового робота"  +/
Сообщение от alexander0203 email(ok) on 02-Июл-09, 09:56 
Задача такая.

Имеется cgi-скрипт вида /cgi-bin/index.cgi?page=pagename . Получая различные значения
параметра "page" скрипт генерирует различный контент (не суть важно). Нужно
сделать так чтобы при получении некорректного значение "page" скрипт генерировал ошибку
Error 404 (указанный url не существует). Понятно, что сообщить об этом пользователю просто - достаточно вывести на экран средствами скрипта соответствующий текст  
"Error 404" и пользователь поймет, что url ошибочный.

НО!  Как быть если страницу пытается сканировать поисковый робот? Допустим я решил убрать с сайта страницу соответствующую определенному значению "page" и выведу вместо нее страницу с сообщением об 404-ошибке. При этом мне нужно чтобы поисковый робот понял, что такой страницы больше нет и перестал ее индексировать.

Но если скрипт выдаст вместо текста страницы сообщение об 404-ошибке то как
поисковый робот узнает что это ОШИБКА? Ведь для него это будет выглядеть что
скрипт по прежнему нормально работает а на странице просто поменялся текст.
И он будет продолжать ее индексировать.

Как правильно сгенерировать cgi-скрипт чтобы сообщить поисковому роботу что данного
url (для опр. значения "page") не существует?

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Генерация cgi-скриптом ошибки 404 для поискового робота"  +/
Сообщение от XAnder (ok) on 02-Июл-09, 10:21 
В первой же строке ответа HTTP-сервера должен быть код статуса (см. RFC 2068). В норме - 200, Not Found - 404. Этот код должен возвращать ваш же скрипт. Так что сделайте так, чтобы он при некоторых условиях возвращал 404 и все дела.

А писать пользователю Error 404, при этом возвращая статус 200 - это гм... не честно.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Генерация cgi-скриптом ошибки 404 для поискового робота"  +/
Сообщение от alexander0203 email(ok) on 02-Июл-09, 10:50 
Т.е. если я правильно понял, при отображении существующей страницы
скрипт должен например печатать заголовок:

print 'Content-Type: text/html; charset=windows-1251; Status: 200 OK \n\n';

а при отображении несуществующей:

print 'Content-Type: text/html; charset=windows-1251; Status: 404 Not found \n\n';

Это правильно?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Генерация cgi-скриптом ошибки 404 для поискового робота"  +/
Сообщение от XAnder (ok) on 02-Июл-09, 16:07 
>Это правильно?

Это неправильно.

Признайтесь, вы не читали RFC 2068. Так что процитирую:

6.1 Status-Line

   The first line of a Response message is the Status-Line, consisting
   of the protocol version followed by a numeric status code and its
   associated textual phrase, with each element separated by SP
   characters.  No CR or LF is allowed except in the final CRLF
   sequence.

       Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

То есть что-то типа:

   HTTP/1.1 200 OK

или

   HTTP/1.1 404 Not Found

Если интересны подробности, читайте. Останутся вопросы - задавайте.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Генерация cgi-скриптом ошибки 404 для поискового робота"  +/
Сообщение от angra (ok) on 02-Июл-09, 19:58 
Вот только вы похоже забыли, что речь идет о cgi скрипте, а не о написании web сервера. Так что такой способ не канает, апач очень удивится увидев такой заголовок и порадует клиента  500 internal server error.

Для cgi скриптов предусмотрен заголовок Status, например так:
print "Status: 404 Not Found\n";
print "Content-Type: text/html\n\nSorry";

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Генерация cgi-скриптом ошибки 404 для поискового робота"  +/
Сообщение от XAnder (ok) on 03-Июл-09, 09:01 
>апач очень удивится увидев такой заголовок и порадует клиента  500
>internal server error.
>
>Для cgi скриптов предусмотрен заголовок Status

Хм... Вы правы. Сейчас проверил на сервере своего хостера - чистый CGI действительно вываливает 500. Это на "домашнем" Апаче у меня mod_perl стоит и "HTTP/1.1 200 OK" кушает и не давится. В общем случае лучше выдавать заголовок Status.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру