Своя 404 ошибка в dle

Для начала давайте узнаем. Что такое страница 404?
Ошибка 404 или Not Found («не найдено» ) стандартный код ответа HTTP о том, что клиент был в состоянии общаться с сервером, но сервер не может найти данные согласно запросу.
Ошибку 404 не следует путать с ошибкой «Сервер не найден» или иными ошибками, указывающими на ограничение доступа к серверу.
Ошибка 404 означает, что запрашиваемый ресурс может быть доступен в будущем, что однако не гарантирует наличие прежнего содержания.
Пользователи наиболее часто сталкиваются с ошибкой 404 при посещении т. н. битых или мёртвых ссылок. Т. о. делая ошибку 404 одной из наиболее узнаваемых ошибок в сети Интернет.

На сколько я знаю в DLE такое страницы нет, и когда пользователь переходит по битой ссылке, его перенаправляет на ‘дефолтную’ страницу 404 хостинг провайдера на котором установлен сайт. Это не очень красиво. Будем решать эту проблему(в DLE).

Установка
Открываем файл .htaccess в корне сайта и ищем в нем:

RewriteEngine On

Под этой строкой вставляем:

ErrorDocument 404 /404.html

Можно просто создать статистическую страницу с названием «404» Либо отдельно создать в корне сайта «404.html» и оформить его!

Вот и всё! теперь при переходе по битым ссылкам пользователя будет перекидывать на вашу страницу 404, а не на страницу хост провайдера.
Теперь давайте применим эту страницу для несуществующих или удаленных новостей на сайте.

Открываем файл /engine/modules/show.full.php и ищем:

elseif( !$news_found ) {         @header( "HTTP/1.0 404 Not Found" );         msgbox( $lang['all_err_1'], $lang['news_err_12'] ); }

Заменяем эти строки на:

elseif( ! $news_found ) {         @header("HTTP/1.0 404 Not Found");         @header("Status: 404 Not Found");         @require_once($_SERVER['DOCUMENT_ROOT'].'/404.html');         exit(); }

Знаю такой способ (с правкой, ZEOS.IN подсказал):

/engine/modules/profile.php

/engine/modules/show.full.php

/engine/modules/show.short.php — в трёх местах

/engine/modules/static.php

в следующей строке после:

@header( "HTTP/1.0 404 Not Found" );

вставить:

exit( include "404.html" );

Второй способ от Александра Медведева (без правки):

Если хотите использовать файл шаблона для вывода 404-й ошибки (что в принципе верно), то вот решение:

1. В main.tpl после

{info}

вставляем

{include file="/_dle_ext/connector.php?act=404"}

2. Что это за файл, читаем здесь

3. В connector.php, например, такой код

<?php

if($act == '404'){

global $news_found;

if(!$news_found){

  $tpl->load_template('404.tpl');

  $tpl->compile('content');

  echo $tpl->result['content'];

  return;

}

}

4. Создаём файл шаблона 404.tpl и делаем там страницу 404

Второй способ не проверял, т.к. меня первый устраивает. ;)

Ошибка 404 на DLE. Настройка

От автора: приветствую вас, друзья. Данная статья будет довольно небольшой и посвящена она настройке страницы 404, то есть страницы, которая показывается, когда происходит ошибка 404 на DLE. Приступим?

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

Стандартная страница сервера с ответом пользователю выглядит примерно так:

Чистая белая страница, с сообщением на английском: Not Found. Ни ссылки на главную страницу сайта, ни каких-либо других ссылок — нет. К тому же, страница оформлена не в стиле вашего сайта, и если пользователь случайно забредет на ваш сайт по устаревшей ссылке, то увидев такую плачевную картину, он, скорее всего, покинет ваш сайт.

Профессия PHP-разработчик с нуля до PRO

Готовим PHP-разработчиков с нуля

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

Узнать подробнее

Командная стажировка под руководством тимлида

90 000 рублей средняя зарплата PHP-разработчика

3 проекта в портфолио для старта карьеры

Именно поэтому многие сайты возвели создание страницы 404 практически в искусство и стараются привлечь и заинтересовать посетителя, случайно попавшего на несуществующий адрес. Посетите Google Картинки и посмотрите картинки по запросу 404. Вы увидите целую коллекцию веселых и интересных картинок, которые используются на реальных сайтах для страницы 404.

Во многих CMS страница 404 есть и проблема, описанная выше уже решена. CMS DLE здесь не исключение. Однако здесь не все так однозначно. В DLE при наборе неверного адреса вы, конечно же, не увидите белую страницу. Нет, вы увидите ваш сайт, с вашим дизайном. Просто вместо контента страницы или новости будет выводиться соответствующий текст ошибки.

Собственно, мы можем управлять лишь оформлением данного текста, задавая нужный нам цвет или фон. Сделать это можно в шаблоне info.tpl:

Здесь мы можем, к примеру, задать для блока нужный класс или разметку. Соответственно, если вы создаете собственную тему для DLE, тогда шаблон info.tpl вам потребуется для вывода различных ошибок. В противном случае, когда возникнет та или иная ошибка, тогда вместо внятного сообщения вы увидите сообщение о том, что нет нужного шаблона.

Конечно, ситуация со страницей 404 в DLE из коробки не самая лучшая, поскольку фактически мы не можем гибко управлять ситуацией с ошибками и создавать страницу 404 с собственным оформлением. Возможно в будущих версиях движка эту ситуацию поправят, но пока что мы можем довольствоваться тем, что имеем. Также можно попробовать поправить самостоятельно, но для этого придется лезть в код самого движка, чего вы сделать не сможете, если используете его бесплатную версию.

На этом текущую статью мы будем завершать. Удачи!

Как сделать собственную страницу ошибки 404 или 404 Not Found для DLE 10.х— это ответ веб-сервера который сообщает, что запрошенный урл страницы на сайте отсутствует. Посетителям интернет порталов иногда наблюдают такую ошибку, особенно если он сохранился в кеше поисковика в адресе страницы или ссылка изначально была битой.

По умолчанию в Dle, в случаи ошибки выводится шаблонная страница «info.tpl», т.е подгружается основной шаблон main.tpl и info.tpl.
Реализация выгодная в плане задержки пользователя, юзер попав на такую страницу скорее всего сразу не закроет страницу, а вернётся на главную или кликнет на навигацию.
Но наверняка найдутся люди которые захотят видеть на своём сайте старомодную статическую html страничку.
У нас на https://dle9.com/ все для сайта dle есть разные возможности реализации данного в разделе Разные шаблоны dle.
Много шаговых инструкций для старых версий или DataLife Engine 10.х , разные хаки для дле….

Важно, чтобы такая страница отдавала ответ серверу 404, а не 200 OK или 302 Found. В противном случае поисковые системы могут посчитать эти страницы за существующие и добавить в индекс много дублей одной странички.
Если вы хотите более подробно узнать Что такое ошибка 404, Как исправить ошибка 404 сайт недоступен, как найти и определить все страницы 404 ошибки сайта и увидеть другие красивые шаблоны HTML Page Not Found и многое другое, то переходите по ссылке выше.

Во общем вношу свой вклад в эту тему.

Итак, установка:
В файле «engine/modules/functions.php» ищем:

function msgbox($title, $text) {
    global $tpl;

Заменяем на:

function msgbox($title, $text) {
global $tpl, $lang;
if( in_array('HTTP/1.0 404 Not Found', headers_list()) || $text == $lang['news_err_27'] ) {
require_once ROOT_DIR.'/404.html';
die();
}else{
    $tplName = 'info.tpl';
}

Готово.
Не забудьте создать в корне (там где расположен файл robota.txt) страницу 404.html с любыми вам подходящими данными.

404-Not-Found-Svoya-stranica-oshibki.rar [15,15 Kb] (cкачиваний: 412)

  • 80

вопрос

Всем привет!

Как сделать так чтобы вместо отдельного файла 404.html можно было ссылаться на статическую страницу с таким же именем и отдавалась правильный 404 ответ?

Делал следующие правки:

/engine/modules/show.full.php

    elseif( !$news_found ) {
        @header( "HTTP/1.0 404 Not Found" );
        msgbox( $lang['all_err_1'], $lang['news_err_12'] );
    }

поменял на:

    elseif( ! $news_found ) {
        @header("HTTP/1.0 404 Not Found");
        @header("Status: 404 Not Found");
        header("Location: /404.html");
        exit();
    }

Также сделал статическую страницу 404… Страница 404 срабатывает но сервер отдает 302! Что не так!?


Потому что, вы используете редирект. 302 редирект — это временный перенос страницы, чем их больше тем хуже, если они конечно не по делу.
Создайте в корне 404.html страницу и вместо этого :

header("Location: /404.html");

Замените на :

require_once($_SERVER['DOCUMENT_ROOT'].'/404.html');

Возможно, вам также будет интересно:

  • Свою ошибку признаю впредь обязуюсь такого
  • Свою ошибку признаю в будущем
  • Свою автобиографию я уже рассказал вам речевая ошибка
  • Свою автобиографию я уже рассказал вам лексическая ошибка
  • Свою автобиографию как называется ошибка

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии