Хитрая обработка Error 404

  • Автор темы AlexDreamer
  • Дата начала

AlexDreamer

Guest
Хитрая обработка Error 404

Затребовал заказчик доступ к товарам в виде

www.site.com/books/493049

решил это сделать через обработку ошибки 404 (missing.php)

если страница не найдена и адрес наподобие указанного выше то формируется адрес

www.site.com/info.php?book=493049

но дальши полные траблы с перенаправлением. пробовал

PHP:
header ("location: ")
и кучу других способов.
не работает.

да и с выполнением missing.php непонятнки.. часто просто показывается станрартное сообщение Error 404.

Если кто-нить делал что подобное, подскажите.
Или может другой способ реализации.

Спасибо. Алексей.
 

AlexDreamer

Guest
Автор оригинала: su1d
http://phpclub.net/talk/showthread.php?s=&threadid=26129&rand=9

там есть то, что тебе нужно
Нашел там три варианта. От Funky cashing сразу отказался.

ErrorDocument описывает вариант, который я пытался применить сразу. НО! обработка то выполняется, а редирект не происходит.

И вариант с $PATH_INFO. По описанию - наиболее подходящий
прописал
<Location /books>
ForceType application/x-httpd-php
</Location>

создал скрипт books, но он выполняется только при
www.site.com/books
a при www.site.com/books/493043 - 404 not found

может apache старый? 1.3.19
я в настройке apachе не силен. может можно как-либо прописать, чтобы при обращении к любому документу (и не существующему тоже) в определенной директории запускался скрипт?
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Сделай через rewrite. Все эти способы --- ублюдство, из-за которого потом вылезают интересные ошибки типа невозможности индексирования поисковиками.
 

su1d

Старожил PHPClubа
спектатор хоть и описывает всё полностью и красиво,
но способ выбрал кривенький... ;)

SadSpirit прав: делай всё по-взрослому - через mod_rewrite
 

AlexDreamer

Guest
Тогда последний вопрос... русская дока по mod_rewrite есть?
или инглиш перелопачивать?
 

lyonchik

Guest
В скрипте, отвечающем за обработку не забудь вставить:

header("HTTP/1.1 200 OK");
 
Сверху