Технический сбой

Сайт временно работает в режиме только для чтения, идут восстановительные работы. Приносим свои извинения за неудобства.
DLE FAQ » Все вопросы » Общие вопросы » Как сделать свою 404 статическую страницу?

Как сделать свою 404 статическую страницу?


     Общие вопросы, Общие вопросы по PHP, Хаки    4517

вопрос
Всем привет!

Как сделать так чтобы вместо отдельного файла 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! Что не так!?

Ответил: PunPun


Потому что, вы используете редирект. 302 редирект - это временный перенос страницы, чем их больше тем хуже, если они конечно не по делу.
Создайте в корне 404.html страницу и вместо этого :
header("Location: /404.html");
Замените на :
require_once($_SERVER['DOCUMENT_ROOT'].'/404.html');

20 комментариев

raimonds.zundurs
Юзер

raimonds.zundurs - -

На статическую страницу нельзя сделать??? Вот например товарищ как то реализовал: http://pafnuty.name/rlehrektrtr.html тоже и тут: http://kinoprofi.net/8837642-ksdasdasdaas-2016.html значит решение есть!!!???

LazyDev
PHP-developer

LazyDev - -


Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

raimonds.zundurs
Юзер

raimonds.zundurs - -

А разница между ними? "require_once($_SERVER['DOCUMENT_ROOT'].'/404.html');" одно и тоже получается? Или я что то не догоняю?

hakypuhbiu
Юзер

hakypuhbiu - -

Настройка и установка 404 страницы:
1.) Скачай любую страничку 404.html
2.) Загрузи страничку 404.html в корень сайта.
3.) В корневом файле .htaccess добавить строчку после: RewriteEngine On
ErrorDocument 404 http://сайт.ru/404.html

raimonds.zundurs
Юзер

raimonds.zundurs - -

Я же написал что мне надо! Читать надо!!!

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

hakypuhbiu
Юзер

hakypuhbiu - -

1.) Создай страницу 404 в админке
2.) В корневом файле .htaccess добавить строчку после: RewriteEngine On
ErrorDocument 404 http://сайт.ru/404.html
И будет тебе счастье, будет кидать на твою страничку которую ты создал.

raimonds.zundurs
Юзер

raimonds.zundurs - -

Ты хоть понимаешь что твой вариант не работает? :) Харе спамить!

hakypuhbiu
Юзер

hakypuhbiu - -

Ручками надо делать)

raimonds.zundurs
Юзер

raimonds.zundurs - -

Скинь в личку сайт где это сделал!

raimonds.zundurs
Юзер

raimonds.zundurs - -

Как и стоило доказать ответа не получил...

Westus
Юзер

Westus - -

Работает, но работает как-то интересно.

raimonds.zundurs
Юзер

raimonds.zundurs - -

Может кто то поделись ссылкой чтобы я мог посмотреть?

Westus
Юзер

Westus - -

http://open-server.ru
ставишь dle и смотришь.

raimonds.zundurs
Юзер

raimonds.zundurs - -

Всего доброго тебе!

Sander
PHP-developer

Sander - -

Работает редирект (302), а не 404 ошибка.
Получается что пользователь видит одно, а браузеру и поисковикам сообщается что страница все еще существует, просто временно переехала на другой адрес.

SanDev.pro - мой блог.

Telegram: @sandev
Skype: Sander8804

Sander
PHP-developer

Sander - -

Данный вариант не подходит к DLE.
В DLE адреса и страницы обрабатываются движком, а именно файлом index.php, который существует и сервер никак не сможет выдать 404 ошибку.
Вот если делать запрос на не существующий файл:
http://sandev.pro/somefile.txt
То да, сервер отдаст указанную страницу.

Автору же нужно, чтобы отображалась страница движка, но с 404 заголовком и в контенте содержимое статической страницы. Так:
http://sandev.pro/web/860-none.html

SanDev.pro - мой блог.

Telegram: @sandev
Skype: Sander8804

shevke
Юзер

shevke - -

Вот здесь страница с ошибкой можно глянуть, делалась по инструкции Все отлично работает... Зачем изобретать велосипед.
В эту страницу можно впихнуть все что угодно

shevke
Юзер

shevke - -

На ваше усмотрение тык.

shevke
Юзер

shevke - -

В качестве
require_once ROOT_DIR.'/404.html';

можете указать и статистическую страницу, не пробовал но по идеи должно работать, если так принципиально

gmzippo
Юзер

gmzippo - -

Всё верно именно так у меня и сделано. Работает прекрасно.

Похожие вопросы

наверх