200 ок вместо 404, как исправить или добавить else?

S
На сайте с 13.11.2012
Offline
72
781

Написал скрипт сайта, адреса следующего вида вася.ру/1234567

Глянул поиск, появилась куча не существующих страниц вида вася.ру/contact.html вася.ру/contact/ и много других вариантов, при этом страницы на самом деле не существует но отдается код 200.

Файл .htaccess выглядит так

## Application Handler
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)?$ 2.php?a=$1 [QSA,NC,L]

## Error 404 ##
ErrorDocument 404 /index.php?a=404

Как научить скрипт выставлять 404 ошибку на не существующих страницах?

Сам сайт формируется с помощью cURL запросов, из-за этого и появляется множество не существующих страниц...

Помогите разобраться, спасибо!

Если после скрипта который отображает результат с помощью echo $postResult;

добавить код

...?> <?php header('HTTP/1.0 404 Not Found'); ?>

отдается 404 ошибка серверу.

Но если страница есть, появляется сообщение об ошибке - header уже был передан т.е. пытается сработать 404, но в результате 200 ок как и нужно.

Может можно с помощью else сделать, чтобы при ответе 200 ок, 404 не отдавалась? Спасибо!

S
На сайте с 30.09.2016
Offline
469
#1

У Вас каша в голове и непонимание процесса. ErrorDocument 404 из хтакцесса будет отдаваться, когда программа сервера не найдёт нужного файла. У Вас же написано, что если по адресу нет файла или директории, то запрос передаётся на файл 2.php, который существует и поэтому в любом случае будет отдаваться код 200. Для того, чтобы отдать код 404, Вы должны программно обработать запрос, выяснить, будет ли в наличии информация, которую надо отдавать браузеру, и если такой информации не предвидится, то формировать хэдер с кодом 404, до начала выдачи заголовков.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
SeVlad
На сайте с 03.11.2008
Offline
1609
#2
Sitealert:
будет ли в наличии информация,

поправка: только не "информация", а "документ".

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий