Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы » Новости, находящиеся на модерации индексируются!

Новости, находящиеся на модерации индексируются!


     19.02.2013    новости, модерация, индексация    Все вопросы » Общие вопросы    4502

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

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

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

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

Собственно вопрос - как сделать у новостей, находящихся на модерации ответ сервера не 200, а 404?

Ответил: Sander


Файл 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'] );
    }

Заменить на:
    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'] );
    }

9 комментариев

Yeti
Юзер

Yeti - 21 февраля 2013 10:22 -

Как вовремя, как раз писал статью о внутренней оптимизации DLE

Yeti
Юзер

Yeti - 21 февраля 2013 10:30 -

Упс, хотя если задуматься, статья была опубликована затем её не удалили, а отправили на модерацию, значит она вернётся в публикации, может правильнее вывести на ней метатег robots с значением noindex пока она на модерации?
а сделать это просто - вместо @header( "HTTP/1.0 404 Not Found" ); вставить $disable_index = 1;

Zlob
Юзер

Zlob - 21 февраля 2013 14:42 -

***Комментарий удален***

ov3rdoc
Юзер

ov3rdoc - 21 февраля 2013 14:25 -

Большое спасибо обоим)

StAlKeR-xXl
Юзер

StAlKeR-xXl - 26 августа 2013 15:21 -

Все равно отдает "ответ сервера - 200"

coolteams
Юзер

coolteams - 24 декабря 2013 14:42 -

работает для тех новостей которые уже были на модерации (отдает 404), если их опубликовать то все гуд - 200. Но если добавить новую новость, она уходит в 404 и пофиг опубликована она или нет.

coolteams
Юзер

coolteams - 24 декабря 2013 15:07 -

сори, хостер менял оборудование.

dj-avtosh
PHP-developer

dj-avtosh - 24 декабря 2013 18:08 -

Классный хостер, который не уведомляет о проведении технических работ. Еще на стадии аудита обязан уведомить.

https://elkhan.ru
По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

maks
Юзер

maks - 6 октября 2023 13:37 -

Для dle 15 почему-то не работает?

Вот исходный код

if( !$news_found AND !$perm ) {
		
		@header( "HTTP/1.1 403 Forbidden" );
		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.1 404 Not Found" );
		
		if( $config['own_404'] AND file_exists(ROOT_DIR . '/404.html') ) {
			@header("Content-type: text/html; charset=".$config['charset']);
			echo file_get_contents( ROOT_DIR . '/404.html' );
			die();
			
		} else msgbox( $lang['all_err_1'], $lang['news_err_12'] );
		
	}


Где добавить @header( "HTTP/1.0 404 Not Found" ); ?

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

 08.07.2014 dimanbmw  Общие вопросы
наверх