вопрос
Здравствуйте, проблема такова:
Если новость удалена то по стандарту пишет:
Сервер отдаёт код статуса HTTP: "404 Not Found".
Всё норм.
Но если отправить новость на модерацию, то она как и положена уберётся с сайта, по адресу статьи будут писать:
Тоже вроде всё ок, но есть проблема, сервер отдаёт код статуса HTTP: "200 OK", следовательно эти страницы спокойно входят в индекс поисковых систем, что не есть хорошо.
Собственно вопрос - как сделать у новостей, находящихся на модерации ответ сервера не 200, а 404?
Если новость удалена то по стандарту пишет:
Внимание, обнаружена ошибка
К сожалению, данная страница для Вас не доступна: возможно, был изменен ее адрес или она была удалена. Пожалуйста, воспользуйтесь поиском.
К сожалению, данная страница для Вас не доступна: возможно, был изменен ее адрес или она была удалена. Пожалуйста, воспользуйтесь поиском.
Сервер отдаёт код статуса HTTP: "404 Not Found".
Всё норм.
Но если отправить новость на модерацию, то она как и положена уберётся с сайта, по адресу статьи будут писать:
Внимание, обнаружена ошибка
Гости не имеют доступа для просмотра статей из данного раздела.
Гости не имеют доступа для просмотра статей из данного раздела.
Тоже вроде всё ок, но есть проблема, сервер отдаёт код статуса HTTP: "200 OK", следовательно эти страницы спокойно входят в индекс поисковых систем, что не есть хорошо.
Собственно вопрос - как сделать у новостей, находящихся на модерации ответ сервера не 200, а 404?
Файл engine/modules/show.full.php
Найти код:
Заменить на:
UPD by Yeti:
Для DLE 9.6 и выше.
Найденный код заменить на:
Найти код:
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'] );
}
Заменить на:
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'] );
}
UPD by Yeti:
Для DLE 9.6 и выше.
Найденный код заменить на:
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'] );
}