Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы Как сделать свою 404 статическую страницу?

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


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

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

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

Ответил: Gameer


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

Комментарии пользователей (20)

raimonds.zundurs
17 | 1

raimonds.zundurs - 31 марта 2016 13:24 - Юзер

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

Gameer
226

1123 | 396

Gameer - 31 марта 2016 13:55 - Эксперт


Истина в противоречии.​

raimonds.zundurs
17 | 1

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

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

hakypuhbiu
91 | 3

hakypuhbiu - 31 марта 2016 14:47 - Юзер

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

raimonds.zundurs
17 | 1

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

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

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

hakypuhbiu
91 | 3

hakypuhbiu - 31 марта 2016 14:59 - Юзер

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

raimonds.zundurs
17 | 1

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

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

hakypuhbiu
91 | 3

hakypuhbiu - 31 марта 2016 15:04 - Юзер

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

raimonds.zundurs
17 | 1

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

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

raimonds.zundurs
17 | 1

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

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

Westus
4

189 | 28

Westus - 31 марта 2016 16:21 - Юзер

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

raimonds.zundurs
17 | 1

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

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

Westus
4

189 | 28

Westus - 31 марта 2016 17:27 - Юзер

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

raimonds.zundurs
17 | 1

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

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

Sander
1126

1637 | 1204

Sander - 31 марта 2016 18:36 - Эксперт

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

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

ICQ: 404-037-556
Skype: Sander8804

Sander
1126

1637 | 1204

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 - мой блог.

ICQ: 404-037-556
Skype: Sander8804

shevke
58 | 4

shevke - 1 апреля 2016 20:49 - Юзер

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

shevke
58 | 4

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

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

shevke
58 | 4

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

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

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

gmzippo
46

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

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

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

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