Перейти к содержимому
Открыть в приложении

Удобный способ просмотра. Узнать больше.

Дизайн и модификация Invision Community

Полноэкранное приложение на главном экране с push-уведомлениями, медалями и многим другим.

Чтобы установить это приложение на iOS и iPadOS
  1. Нажмите иконку «Поделиться» в Safari
  2. Прокрутите меню и нажмите На экран «Домой».
  3. Нажмите Добавить в правом верхнем углу.
Чтобы установить это приложение на Android
  1. Нажмите меню из трёх точек (⋮) в правом верхнем углу браузера.
  2. Нажмите Добавить на главный экран или Установить приложение.
  3. Подтвердите, нажав Установить.
Русский язык для Invision Community 5

Выводить ошибку 404 если тема удалена

День добрый, есть очень важная проблема, ни где не нашел решения, это выводить ошибку 404 если форум не существует или был удален, так как поисковая система выдает удаленный форум, а он должен удалить из поисковика.

 

Есть форум

Как настроить вывод ошибки 404 например если перейдем по ссылке /index.php?showtopic=1

Если кто то уже делал напишите пожалуйста, за ранее спасибо!

Рекомендованные сообщения

У вас и по серьезнее проблема имеется, версия форума очень старая, многие важные патчи безопасности для нее не выпускались. Это же старый добрый 3.0x, интересно как его до сих пор еще не взломали... Ссылки из темы удалил от греха подальше, если вдруг кто-то не устоит перед соблазном. 3.0 это просто находка для юных скрипткиддисов.

 

По поводу сабжа.

В 3.0 еще небыла организована правильная отдача кодов статусов на разные события - несуществующие темы, запрещенный доступ и тд. В последующих версиях отдаются соответствующие коды для всех ошибок форума.

 

Открыть \admin\sources\classes\output\publicOutput.php

Найти

 

public function showError( $message, $code=0, $logError=FALSE, $logExtra='' )

Заменить на

 

public function showError( $message, $code=0, $logError=FALSE, $logExtra='', $header=401 )

Найти

 

	//-----------------------------------------
	// Send notification if needed
	//-----------------------------------------

	$this->sendErrorNotification( $msg, $code );

Ниже добавить

 

	//-----------------------------------------
	// Set header response code
	//-----------------------------------------

	$this->outputFormatClass->setHeaderCode( $header ? $header : 401 );

 

Открыть admin\sources\classes\output\formats\coreOutput.php

 

Найти

	if ( ! $this->_headerStatus )
	{
		switch( $this->_headerCode )
		{
			case 200:
				$this->_headerStatus = 'OK';
			break;
			case 301:
				$this->_headerStatus = 'Moved Permanently';
			break;
		}
	}

Заменить на

 

	if ( ! $this->_headerStatus )
	{
		switch( $this->_headerCode )
		{
			case 200:
				$this->_headerStatus = 'OK';
			break;

			case 301:
				$this->_headerStatus = 'Moved Permanently';
			break;

			case 302:
				$this->_headerStatus = 'Moved Temporarily';
			break;

			case 401:
				$this->_headerStatus = 'Unauthorized';
			break;				

			case 403:
				$this->_headerStatus = 'Forbidden';
			break;

			case 404:
				$this->_headerStatus = 'Not Found';
			break;

			case 500:
				$this->_headerStatus = 'Internal Server Error';
			break;

			case 503:
				$this->_headerStatus = 'Service Unavailable';
			break;
		}
	}

 

Теперь по умолчанию все ошибки форума будут отдавать статус 401 - Unauthorized. Этого хватит чтобы избавится от индексации служебных страниц.

 

Чтобы настроить 404 код для несуществующих тем:

 

Открыть admin\applications\forums\modules_public\forums\topics.php

 

Найти

$this->registry->output->showError( 'topics_no_tid', 10341 );

Заменить на

 

$this->registry->output->showError( 'topics_no_tid', 10341, null, null, 404 );

 

Найти

 

$this->registry->output->showError( 'topics_no_tid', 10343 );

Заменить на

 

$this->registry->output->showError( 'topics_no_tid', 10343, null, null, 404 );

 

Найти

$this->registry->output->showError( 'topics_no_fid', 10342 );

Заменить на

 

$this->registry->output->showError( 'topics_no_fid', 10342, null, null, 404 );

 

И далее по списку можно править все ошибки форума.

  • Автор

Спасибо большое, займусь тогда обновлением версии.

  • Автор

Какую версию поставить, чтобы было безопасно?

  • Автор

я сделал все как вы написали, но не сробатывает, возможно нужно прописать в .htaccess о том что нужно открывать страницу /404.php к примеру

Нужно смотреть заголовки ответа сервера. По умолчанию все ошибки будут отдавать код 401, что уже "срабатывает" против индексации.

  • Автор

Какой форум вы посоветуйте? версию, для обновления

Последнюю. На данный момент 3.4.8.

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.