22 Ноября 2017, 23:18:05

Автор Тема: php создание ошибки 404  (Прочитано 20073 раз)

0 Пользователей и 1 Гость просматривают эту тему.

mishkamsn

  • Гость
php создание ошибки 404
« : 22 Февраля 2010, 23:48:03 »
Доброго времени суток.
У меня давно есть проблема которую я никак не могу решить:
Нужно на php создать ошибку 404.
Конкретней: пользователь переходит на сайт по ссылке ведущей на контент который был удален (динамические страницы php), нужно отдать пользователю 404, но с сохранением дизайна сайта. Редиректы не нужны. Нужно сохранение первоначального адреса. Причем апач не даст 404, как таковая страница будет существовать, не будет контента в бд для нее.

Возможно ктото уже сталкивалься с данной проблемой. Нужна хотябы теория.
Заранее благодарен.
« Последнее редактирование: 23 Февраля 2010, 00:07:43 от mishkamsn »

Оффлайн Demix

  • Отец отцов и матерей
  • Старожил
  • ****
  • Сообщений: 271
  • Репутация: 22
  • Пол: Мужской
    • intObservatory.ru
Re: php создание ошибки 404
« Ответ #1 : 23 Февраля 2010, 01:12:40 »
Думаю в этом нет не какой проблемы, создаем .htaccess и добавляем следующую строчки:
RewriteEngine on

ErrorDocument 404 http://страница на которую будет переходить запрос при ошибке
Раздача брошенных сайтов: http://www.intobservatory.ru/dispensation.php

mishkamsn

  • Гость
Re: php создание ошибки 404
« Ответ #2 : 23 Февраля 2010, 01:25:11 »
Нужно без редиректа. Должна быть страница на которую первоначально зашли. Но чтобы браузер (поисковики) понимали что это 404. Нужно дать странице заголовок HTTP/1.1 404 Not Found. вопрос как это сделать

webDoktor

  • Гость
Re: php создание ошибки 404
« Ответ #3 : 23 Февраля 2010, 08:16:30 »
Может Вам это подойдет: _http://www.uprogram.ru/blog.php?id=57 ?

mishkamsn

  • Гость
Re: php создание ошибки 404
« Ответ #4 : 23 Февраля 2010, 12:06:41 »
по вашей ссылке очень хорошая информация. но это нето.

проблему решил.
в php скрипте перед выводом страницы нужно:

header('HTTP/1.1 404 Not Found');

затем вывод страницы.

после этого браузеры (поисковики) начали понимать. Проверил на менеджере закачек Download Master. При загрузке страниц сделанных таким образом он понимает что это 404 и не загружает их.




Оффлайн Demix

  • Отец отцов и матерей
  • Старожил
  • ****
  • Сообщений: 271
  • Репутация: 22
  • Пол: Мужской
    • intObservatory.ru
Re: php создание ошибки 404
« Ответ #5 : 23 Февраля 2010, 16:35:45 »
mishkamsn, что мешает создать отдельную страницу и вписать все что хотите для отражения 404?
Раздача брошенных сайтов: http://www.intobservatory.ru/dispensation.php

mishkamsn

  • Гость
Re: php создание ошибки 404
« Ответ #6 : 23 Февраля 2010, 18:53:35 »
Такая страница у меня созданна.
Но есть случаи когда нужно другое.

mysite.ru/index.php?id=номер файла, статьи итд

предположим файл с номером 12 удалил.

пользователь заходит по ссылке mysite.ru/index.php?id=12
         (файл index.php существует, значит апач 404 не даст.)
php скрипт запрашивает из бд инфу по файлу 12. и берет из нее инфу о том что он был удален по таким то причинам. Далее генерирует страницу со стандартным дизайном и добавляет ей 404.

Суть мысли думаю понятна




Iljainc

  • Гость
Re: php создание ошибки 404
« Ответ #7 : 24 Февраля 2010, 09:07:44 »
Такая страница у меня созданна.
Но есть случаи когда нужно другое.

mysite.ru/index.php?id=номер файла, статьи итд

предположим файл с номером 12 удалил.

пользователь заходит по ссылке mysite.ru/index.php?id=12
         (файл index.php существует, значит апач 404 не даст.)
php скрипт запрашивает из бд инфу по файлу 12. и берет из нее инфу о том что он был удален по таким то причинам. Далее генерирует страницу со стандартным дизайном и добавляет ей 404.

Суть мысли думаю понятна

В php есть такая функция - header. Вот ее гуглить надо.

mishkamsn

  • Гость
Re: php создание ошибки 404
« Ответ #8 : 25 Февраля 2010, 19:36:54 »
новая проблема.
Допустим сделали

RewriteEngine on
ErrorDocument 404 http://страница на которую будет переходить запрос при ошибке

как сделать так чтобы информация о ненайденных файлах где нибудь сохранялась. чтото типо "Статистика статистических ошибок"

Кровавый

  • Гость
Re: php создание ошибки 404
« Ответ #9 : 21 Марта 2010, 16:47:26 »
новая проблема.
Допустим сделали

RewriteEngine on
ErrorDocument 404 http://страница на которую будет переходить запрос при ошибке

как сделать так чтобы информация о ненайденных файлах где нибудь сохранялась. чтото типо "Статистика статистических ошибок"

Написать скрипт, который будет в отдельную таблицу в БД записывать нужную вам статистику. В чём проблема?

mishkamsn

  • Гость
Re: php создание ошибки 404
« Ответ #10 : 24 Марта 2010, 20:55:45 »
в этом и проблема. Как выдернуть с какой страницы апач перекинул?

mishkamsn

  • Гость
Re: php создание ошибки 404
« Ответ #11 : 24 Марта 2010, 23:12:45 »
Проблема исчезла.
оказывается я просто неправильно сконфигурировал .htaccess

ErrorDocument 404      www.mysait.ru/404.php
 при такой записи апач делает редирект на страницу 404.php

ErrorDocument 404      /404.php
 а при такой не делает и у нас остается неизменной адресная строка.

Кровавый

  • Гость
Re: php создание ошибки 404
« Ответ #12 : 06 Апреля 2010, 20:49:26 »
в этом и проблема. Как выдернуть с какой страницы апач перекинул?

Хм... Ну, в принципе, я не знаю точно, будет ли это работать в вашем случае. Но по логике, что данная функция вырисовывает то, что послал ваш браузер, думаю, работать будет. Если учесть, что перенаправляет сам аппач, а не посылается заголовок из браузера...

getenv("REQUEST_URI");
Попытка не пытка. :)

mishkamsn

  • Гость
Re: php создание ошибки 404
« Ответ #13 : 07 Апреля 2010, 16:41:41 »
Цитировать
getenv("REQUEST_URI");

если сделать в .htaccess
 ErrorDocument 404      /404.php
то будет работать.

если же сделать так:
 ErrorDocument 404      www.mysait.ru/404.php
то  getenv("REQUEST_URI"); выдаст нам: 404php, но не ту страницу с которой зашел пользователь

Кровавый

  • Гость
Re: php создание ошибки 404
« Ответ #14 : 16 Апреля 2010, 23:26:44 »
Попробуйте покурить это: http://www.php.su/articles/?cat=vars&page=015

Цитировать
Элемент $_SERVER['HTTP_REFERER']

В элементе $_SERVER['HTTP_REFERER'] приводится адрес страницы, с которой посетитель пришёл на данную страницу. Переход должен осуществляться по ссылке. Создадим две страницы index.php и page.php.
Да и прочее. Может поможет. :)

mishkamsn

  • Гость
Re: php создание ошибки 404
« Ответ #15 : 25 Апреля 2010, 21:13:21 »
в переменной  $_SERVER['HTTP_REFERER'] будет какоето значение только в том случае если эти данные были переданны. браузеры на компе ее заполняют. но апач при осуществлении переходов оставляет ее пустой.