PHP - Traitement d'erreur personnalisé. Le 404 redirigé est détourné par AVG Anti-Virus. Comment arrêter?

StackOverflow https://stackoverflow.com/questions/166482

Question

J'ai un site Web qui utilise la gestion d'erreur 404 personnalisée dans PHP / Apache pour afficher des pages spécifiques.
par exemple. http://metachat.org/recent

J'ai le sentiment que c'est une mauvaise façon de faire cela, mais c'est le code dont j'ai hérité ...

Bien que la page s'affiche correctement sur la plupart des navigateurs, AVG Anti-Virus est en train de détourner la page et de la rediriger vers une page 404 hors site.

J'ai essayé de forcer un en-tête (Status: 200 OK) à l'aide de la commande header en PHP, mais si je fais un curl -I de la page, j'obtiens ce qui suit ...

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

Je suppose que la première ligne est la ligne qui intercepte AVG pour sa redirection forcée. Sans réécrire le logiciel pour utiliser Mod_rewrite (ce que je ne comprends pas vraiment), comment puis-je (en PHP) arrêter le "HTTP: / 1/1 404 Introuvable" la ligne est-elle envoyée dans les en-têtes lors de l’affichage de cette page?

Merci.

Était-ce utile?

La solution

Il n'y a pas d'autre moyen que d'utiliser la réécriture d'URL (mod_rewrite) ou de créer les pages manquantes. Ce qui se passe, c'est que le client demande une page qui n'existe pas. Apache est configuré pour servir une page spéciale après 404 erreurs, mais il envoie toujours le code d'état 404, puis les interruptions AVG.

Donc, vous pourriez faire quelque chose comme:

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

Cela réécrira tout ce qui n'existe pas (et donnerait donc un 404) à votre index.php avec le chemin de l'URL dans le paramètre de chaîne de requête missing_content

Autres conseils

Si ce que vous obtenez est une erreur Page non trouvée , ne faites pas envoyer l'état 200 correctement. S'il vous plaît.

C’est l’une des "astuces" les plus ennuyeuses. les gens font pour une raison quelconque. Si la demande de la page n’existe pas, dites-le-lui, ainsi qu’à son navigateur. Et pour les moteurs de recherche, cela va sinon explorer / mettre en cache votre page d'erreur personnalisée en pensant que c'est la réponse réelle.

Si quelqu'un a un logiciel installé qui affiche autre chose que votre 404, c'est son propre problème et n'essayez pas de le combattre, votre service ment au navigateur:)

Certains navigateurs n’affiche pas le contenu de 404 pages si ce contenu est assez petit. Si le contenu de la page est plus volumineux, ils l'afficheront. Cette règle varie selon le navigateur. Essayez d’ajouter du contenu à votre page 404 et voyez si cela vous aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top