5.06.13, 19:28
5 комментарий
  DLE Хаки

Страница ошибок 404, 403, 500 для DLE

Делаем страницу для ошибок 404, 401, 400, 403, 500 для DataLife Engine.
Существует несколько вариантов решений данного вопроса, опишу вам все...

Вариант номер один:
1. Создаем в админпанели => статические страницы новую страницу с названием 404 в описании можно указать Ошибка 404!, дальше в текстовом поле пишите что пожелаете.

2. В файле .htaccess (находится в корне)

после:

RewriteEngine On


добавляем:

ErrorDocument 404 /404.html


Теперь при попытке получить прямой доступ к несуществующим файлам: вашсайт.ру/trololo.php или вашсайт.ру/trololo.jpg вместо того чтоб увидеть сообщение сервера пользователь попадет на созданную вами страничку.
Кроме того для этой страницы вы можете создать и использовать отдельный шаблон.

Аналогичным образом можно поступить и в случае с другими ошибками, например с 403 ошибкой.

Автор: CORSAIR


Вариант номер два:
В .htaccess ищем:

RewriteEngine On


Вставляем выше:

ErrorDocument 400 http://site.ru/index.php?do=found&400
ErrorDocument 401 http://site.ru/index.php?do=found&401
ErrorDocument 403 http://site.ru/index.php?do=found&403
ErrorDocument 500 http://site.ru/index.php?do=found&500
ErrorDocument 404 http://site.ru/index.php?do=found&404


Не забываем заменить адрес сайта!

В файле engine/engine.php ищем:

switch ($do) {


Вставляем ниже:

case "found":
    if(isset($_GET['400'])) {
        $title="неверный запрос (400)";
        $e=400;
    }elseif(isset($_GET['401'])) {
        $title="требуется атворизация (401)";
        $e=401;
    }elseif(isset($_GET['403'])) {
        $title="ограничение доступа (403)";
        $e=403;
    }elseif(isset($_GET['404'])) {
        $title="файл не найден (404)";
        $e=404;
    }elseif(isset($_GET['500'])) {
        $title="перезагрузка сервера (500)";
        $e=500;
    }else {
        $title="файл не найден (404)";
        $e=404;
    }

    $metatags['title'] = "Название сайта - {$title}";
    
    $tpl->load_template( $e.'.tpl' );
    $tpl->compile( 'content' );
break;


Не забываем создать шаблоны 400.tpl, 401.tpl, 403.tpl, 500.tpl, 404.tpl

Вариант номер три:
Что бы выходило на всех страницах .

Установить можно так :

Открываем файл engine/modules/static.php находим:

msgbox( $lang['all_err_1'], $lang['news_page_err'] );



Меняем на:

require_once ROOT_DIR.'/404/404.html';die();


Я бы посоветовал первый вариант. Ибо лишний раз ковырять код движка... зачем оно надо, если можно обойтись одним htaccess!?

Комментарии

  1. malenovski Пользователь offline 19 марта 2015 13:25                    

    Как для DLE-10.4 замутить ? Не один вышеперечисленный вариант на работает на ( 10.4 ).

  1. ToNik Пользователь offline 19 марта 2015 13:32                    

    malenovski, Первый вариант рабочий, у меня стоит...

  1. malenovski Пользователь offline 19 марта 2015 13:55                    

    Да - согласен, работает частично - а как быть с крякообразами ? типа сайт.тд/gerygfdvkjkjdh

    И ещё - на удалённые новости тоже не работает 404

  1. ToNik Пользователь offline 19 марта 2015 14:11                    

    malenovski, Скачайте нормальный html шаблон ошибки и подключите его без стат страниц

  1. Valeriu 19 ноября 2016 10:54                    

    Второй вариант рабочий, спасибо

Напишите своё мнение