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

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


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

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

Как сделать так чтобы вместо отдельного файла 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 - 31 марта 2016 13:24 -

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

LazyDev
PHP-developer

LazyDev - 31 марта 2016 13:55 -


Мой блог: LazyDev.pro

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

raimonds.zundurs
Юзер

raimonds.zundurs - 31 марта 2016 14:16 -

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

hakypuhbiu
Юзер

hakypuhbiu - 31 марта 2016 14:47 -

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

raimonds.zundurs
Юзер

raimonds.zundurs - 31 марта 2016 14:50 -

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

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

hakypuhbiu
Юзер

hakypuhbiu - 31 марта 2016 14:59 -

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

raimonds.zundurs
Юзер

raimonds.zundurs - 31 марта 2016 15:03 -

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

hakypuhbiu
Юзер

hakypuhbiu - 31 марта 2016 15:04 -

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

raimonds.zundurs
Юзер

raimonds.zundurs - 31 марта 2016 15:17 -

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

raimonds.zundurs
Юзер

raimonds.zundurs - 31 марта 2016 15:44 -

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

Westus
Юзер

Westus - 31 марта 2016 16:21 -

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

raimonds.zundurs
Юзер

raimonds.zundurs - 31 марта 2016 17:04 -

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

Westus
Юзер

Westus - 31 марта 2016 17:27 -

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

raimonds.zundurs
Юзер

raimonds.zundurs - 31 марта 2016 17:38 -

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

Sander
PHP-developer

Sander - 31 марта 2016 18:36 -

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

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

Telegram: @sandev
Skype: Sander8804

Sander
PHP-developer

Sander - 31 марта 2016 18:21 -

Данный вариант не подходит к 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 - 1 апреля 2016 20:49 -

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

shevke
Юзер

shevke - 1 апреля 2016 20:53 -

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

shevke
Юзер

shevke - 2 апреля 2016 10:18 -

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

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

gmzippo
Юзер

gmzippo - 3 апреля 2016 18:54 -

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

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

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

наверх