Закрываем от индексации статьи отправленные на модерацию
В 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 и выше
Комментариев 0