Answer the question
In order to leave comments, you need to log in
Fix 404 page title in Bitrix?
The 404 error page shows the wrong title. For example, on site.ru/abrakadabra/ it shows the site name, on site.ru/dostavka/abrakadabra/ or site.ru/catalod/abrakadabra/ it shows the title of the parent section (delivery and catalog, respectively). The title template displays <?$APPLICATION->ShowTitle()?>. The 404.php code is attached. Why is this happening and how to fix it?
<?
include_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/urlrewrite.php');
CHTTP::SetStatus("404 Not Found");
@define("ERROR_404","Y");
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Страница не найдена - Ошибка 404");?>
<div class="text-main" style="margin-top: 20px;">
<p>К сожалению, такой страницы не существует. Возможно, вы перешли по некорректной ссылке. Пожалуйста, воспользуйтесь поиском или меню сайта</p>
<?
$APPLICATION->IncludeComponent("bitrix:main.map", "template2", Array(
"LEVEL" => "3", // Максимальный уровень вложенности (0 - без вложенности)
"COL_NUM" => "2", // Количество колонок
"SHOW_DESCRIPTION" => "N", // Показывать описания
"SET_TITLE" => "Y", // Устанавливать заголовок страницы
"CACHE_TIME" => "36000000", // Время кеширования (сек.)
"COMPONENT_TEMPLATE" => ".default",
"CACHE_TYPE" => "A", // Тип кеширования
),
false
);?></div>
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
Answer the question
In order to leave comments, you need to log in
Show me the template, please. The design of the 404 page is correct.
There was such a problem on one project, programmers or SEOs made up something.
I got out of the situation by adding such a generic handler to init.php
AddEventHandler('main', 'OnEpilog', '_Check404Error', 1);
function _Check404Error(){
if(defined('ERROR_404') && ERROR_404=='Y' || CHTTP::GetLastStatus() == "404 Not Found"){
GLOBAL $APPLICATION;
$APPLICATION->RestartBuffer();
$APPLICATION->SetPageProperty("keywords", "Страница не найдена");
$APPLICATION->SetPageProperty("title", "Страница не найдена");
$APPLICATION->SetPageProperty("description", "Страница не найдена");
$APPLICATION->SetPageProperty("ADDITIONAL_TITLE", "Страница не найдена"); // Это кастомная вещь, если тайтл переопреелен, как в моем случае - вам, возможно не нужно.
$APPLICATION->SetTitle("Страница не найдена");
require $_SERVER['DOCUMENT_ROOT'].SITE_TEMPLATE_PATH.'/header.php';
require $_SERVER['DOCUMENT_ROOT'].'/404.php';
require $_SERVER['DOCUMENT_ROOT'].SITE_TEMPLATE_PATH.'/footer.php';
}
}
If the advice above does not help someone - on one of the projects it helped me in the file /404.php
After require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
Add
$APPLICATION->SetTitle("Page not found");
$APPLICATION->SetPageProperty("title", "Page not found");
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question