• Автор:

    Flesha
  • Добавлено:

    фев 21, 2013
  • Комментариев:

    0
  • Просмотров:

    1926

Хак Закрываем от индексации статьи на модерации

Хак Закрываем от индексации статьи на модерации

В DataLife Engine с новостями отправленными на модерацию наблюдается проблема.

А суть проблемы такова:
Если новость удалена то по стандарту пишет:
Внимание, обнаружена ошибка
К сожалению, данная страница для Вас не доступна: возможно, был изменен ее адрес или она была удалена. Пожалуйста, воспользуйтесь поиском.


Сервер отдаёт код статуса HTTP: "404 Not Found".
Всё норм.

Но если отправить новость на модерацию, то она как и положена уберётся с пользовательской части сайта, по адресу статьи будут писать:
Внимание, обнаружена ошибка
Гости не имеют доступа для просмотра статей из данного раздела.


Тоже вроде всё ок, но есть проблема, сервер отдаёт код статуса HTTP: "200 OK", следовательно эти страницы спокойно входят в индекс поисковых систем, что не есть хорошо.

Решить данную проблему можно двумя способами: чтобы сервер от дал 404 или запретить индексирование данной страницы пока она на модерации.

Установка:

В файле engine/modules/show.full.php
найти:
if( !$news_found AND !$perm ) msgbox( $lang['all_err_1'], "<b>{$user_group[$member_id['user_group']]['group_name']}</b> " . $lang['news_err_28'] );
elseif( !$news_found ) {
@header( "HTTP/1.0 404 Not Found" );
msgbox( $lang['all_err_1'], $lang['news_err_12'] );
}


а) делаем чтобы у новостей, находящихся на модерации ответ сервера был не 200, а 404 (реализация Sander-а)
Заменить на:
if( !$news_found AND !$perm ){
@header( "HTTP/1.0 404 Not Found" );
msgbox( $lang['all_err_1'], "<b>{$user_group[$member_id['user_group']]['group_name']}</b> " . $lang['news_err_28'] );
}elseif( !$news_found ) {
@header( "HTTP/1.0 404 Not Found" );
msgbox( $lang['all_err_1'], $lang['news_err_12'] );
}


б) делаем чтобы у новостей, находящихся на модерации выводился метатег robots со значением noindex (реализация Yeti)
Заменить на:
if( !$news_found AND !$perm ){
$disable_index = 1;
msgbox( $lang['all_err_1'], "<b>{$user_group[$member_id['user_group']]['group_name']}</b> " . $lang['news_err_28'] );
}elseif( !$news_found ) {
@header( "HTTP/1.0 404 Not Found" );
msgbox( $lang['all_err_1'], $lang['news_err_12'] );
}


Версия DLE: 9.7 и выше
Авторы: Sander(nfhelp.ru) и Yeti(dlepro.ru)
Проблему нашёл ov3rdoc
источник: dle-faq.ru
Вернуться
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.