Страница 404 битрикс. Пример настройки и оформления 404 на битрикс.

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

Опишу список вопросов, которые будут обозначены в этой статье:

  1. Страница 404 битрикс. Как настроить?
  2. Пример оформления 404 на битрикс.
  3. Вопрос о том, что 404 страница отдает код 200.
  4. Подводные камни при настройке 404 страницы.

Итак пойдем по порядку!

Страница 404 битрикс. Как настроить?

Обычно, в битрикс страница 404 настраивается в пару кликов, красивый внешний вид достигается копированием заготовки html кода для 404 страницы. Пойдем по порядку и тут.

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

  • Устанавливать статус 404
  • Показ специальной страницы

Битрикс страница 404

Эти параметры должны быть установлены по умолчанию при разработке или seo оптимизации сайтов на битриксе.

После установки этих параметров, необходимо сохранить настройки компонента, и проверить результат в разных вариациях (добавление к существующему url дополнительных букв, цифр в разных местах). Если все удачно и отдается страница со статусом 404, необходимо её оформить.

В битрикс страница 404 размещается в корне сайта в файле 404.php.

Пример оформления 404 на битрикс:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
	CHTTP::SetStatus("404 Not Found");
	@define("ERROR_404","Y");
 
	require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
 
	$APPLICATION->SetTitle("Страница не найдена");
	?>
	<section class="top_title">
	<div class="imgBox">
	 <img src="/img/bg_basket.jpg" alt="">
	</div>
	<div class="content_box">
		<div class="top_title_row">
			<div class="top_title_col">
				<h1><?$APPLICATION->ShowTitle(false);?></h1>
			</div>
		</div>
	</div>
	 </section>
	<div class="content_box">
	<style>
		.page404{position:relative;transition:all 0.3s ease;-moz-transition:all 0.3s ease;-ms-transition:all 0.3s ease;-o-transition:all 0.3s ease;-webkit-transition:all 0.3s ease;}
		.page404 .i404{font-size: 120px; text-align: center; line-height: 90px;}
		.page404 .t404{margin:74px 0 0;text-align:center;}
		.col-md-7{display: inline-block; vertical-align: top; width: 58%;}
		.col-md-5{display: inline-block; vertical-align: top; width: 41%;}
		.btn{width: 55%; margin: 0 auto;}
		@media only screen and (max-width: 768px) {
			.col-md-7,
			.col-md-5 {
				width: 100%;
			}
			.basket_after {
				background-position: top center;
			}
		}
	</style>
		<div class="page404">
			<div class="row">
				<div class="col-md-7 hidden-xs hidden-sm">
					<div class="basket_after">
						<div class="i404">404</div>
					</div>
				</div>
 
				<div class="col-md-5 col-sm-12">
					<div class="t404">
						<div style="font-size:44px;">Ошибка 404</div>
						<div style="font-size:18px;color:#666666;">Страница не найдена</div>
						<div style="font-size:13px;">Неправильно набран адрес или такой<br />страницы не существует</div>
						<a href="<?=SITE_DIR?>" class="btn btn_red card_add">Перейти на главную</a>
						<?if($_SERVER["HTTP_REFERER"]):?>
							<div>
								или <a href="<?=$_SERVER["HTTP_REFERER"]?>">вернуться назад</a>
							</div>
						<?endif;?>
					</div>
				</div>
			</div>
		</div>
	</div>
	<?
	require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>

С кодом выше и с базовыми настройками 404, я думаю все понятно, продолжим.

Вопрос о том, что 404 страница отдает код 200.

Если 404 страница отдает код 200, идем в настройки главного модуля и проверяем наличие галочки у пункта «Посылать в заголовке статус 200 на 404 ошибку». Он должен быть отключен!

404 страница отдает код 200

После этого страница должна отдавать статус 404.

Подводные камни при настройке 404 страницы в битрикс:

Бывает, что 404 страницу необходимо настроить на каком-нибудь готовом решении. Тут необходимо рассматривать каждый конкретный случай индивидуально. Возможно поможет вставка в init.php кода:

1
2
3
4
5
6
7
8
9
10
11
12
	AddEventHandler("main", "OnEpilog", "error404Page");
	function error404Page()
	{
		if(defined('ERROR_404') && ERROR_404 == 'Y')
		{
			global $APPLICATION;
			$APPLICATION->RestartBuffer();
			include $_SERVER['DOCUMENT_ROOT'].SITE_TEMPLATE_PATH.'/header.php';
			include $_SERVER['DOCUMENT_ROOT'].'/404.php';
			include $_SERVER['DOCUMENT_ROOT'].SITE_TEMPLATE_PATH.'/footer.php';
		}
	}

Возможно поможет этот код, нужно пробовать и прокачивать:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
	define("PREFIX_PATH_404", "/404.php");
	AddEventHandler("main", "OnAfterEpilog", "error404Page");
	function error404Page() {
		global $APPLICATION;
 
		if (!defined('ERROR_404') || ERROR_404 != 'Y') {
			return;
		}
 
		if ($APPLICATION->GetCurPage() != PREFIX_PATH_404) {
			header('X-Accel-Redirect: '.PREFIX_PATH_404);
			exit();
		}
	}

Если нечего не помогло, поздравляю вас! Необходимо лезть внутрь компонента, с помощью которого сделан ваш каталог, или статейный раздел и искать там место, где вставить обработку 404 ошибки. Это наверняка будет компонент который будет лежать в своем пространстве имен. Больше сказать ничего не могу, только прокачивать!

P.S.: Любую задачу можно выполнить, важно уделить её достаточно времени.

На этом все, теперь в bitrix 404 страница настроена и должна работать корректно, если возникнут вопросы или пожелания, рассмотреть реализацию какой-либо задачи — пишите в комментарии, разберем её выполнение в ближайшее время! Всем удачи и успехов в работе!