PHP - Пользовательская обработка ошибок. Redirected 404 захватывается антивирусом AVG. Как остановиться? - PullRequest
1 голос
/ 03 октября 2008

У меня есть веб-сайт, который использует пользовательскую обработку ошибок 404 в PHP / Apache для отображения определенных страниц.
например http://metachat.org/recent

У меня такое чувство, что это плохой способ сделать это, но это код, который я унаследовал ...

Хотя страница отображается правильно в большинстве браузеров, я получаю ситуацию, когда AVG Anti-Virus захватывает страницу и перенаправляет ее на страницу 404 вне сайта.

Я пытался форсировать заголовок (Status: 200 OK) с помощью команды header в PHP, но если я делаю скручивание -I страницы, я получаю следующее ...

HTTP/1.1 404 Not Found
Date: Fri, 03 Oct 2008 11:43:01 GMT
Server: Apache/2.0.54 (Debian GNU/Linux) DAV/2 SVN/1.1.4 PHP/4.3.10-16 mod_ssl/2
.0.54 OpenSSL/0.9.7e
X-Powered-By: PHP/4.3.10-16
Status: 200 OK
Content-Type: text/html

Я полагаю, что первая строка - это строка AVG-ловушек для принудительного перенаправления. Без переписывания программного обеспечения для использования Mod_rewrite (что я на самом деле не понимаю), как я могу (в PHP) остановить отправку строки «HTTP: / 1/1 404 Not Found» в заголовках при отображении этой страницы?

Спасибо.

Ответы [ 3 ]

4 голосов
/ 03 октября 2008

Если получится ошибка Страница не найдена , не заставит ее отправить Состояние 200 ОК. Пожалуйста. * * 1005

Это один из самых надоедливых "трюков", которые люди делают по любой причине. Если страница запроса пользователя не существует, сообщите об этом ему, а также его браузеру. И для поисковых систем, которые иначе будут сканировать / кэшировать вашу пользовательскую страницу с ошибкой, думая, что это фактический ответ.

Если у кого-то установлено какое-то программное обеспечение, которое отображает что-то другое вместо вашего 404, это его собственная проблема, и не пытайтесь бороться с этим, заставляя ваш сервис обманывать браузер

4 голосов
/ 03 октября 2008

Нет другого способа, кроме как переписать URL (mod_rewrite) или создать недостающие страницы. Происходит то, что клиент запрашивает страницу, которая не существует. Apache настроен для обслуживания специальной страницы при 404 ошибках, но все равно отправляет код состояния 404, а затем AVG перехватывает это.

Итак, вы можете сделать что-то вроде:

RewriteEngine On
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !-d
RewriteRule (.*) index.php?missing_content=$1

Это перезапишет все, что не существует (и, следовательно, даст 404) в ваш index.php с URL-путем в параметре строки запроса missing_content

0 голосов
/ 20 апреля 2012

Некоторые браузеры не отображают содержимое 404 страниц, если оно довольно маленькое. Если есть больше содержимого страницы, они отображают его. Это правило зависит от браузера. Попробуйте добавить больше контента на страницу 404 и посмотрите, поможет ли это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...