2008-10-03 23 views
1

J'ai un site Web qui utilise la gestion des erreurs 404 personnalisée dans PHP/Apache pour afficher des pages spécifiques.
par exemple. http://metachat.org/recentPHP - Gestion des erreurs personnalisées. Redirigé 404 est détourné par AVG Anti-Virus. Comment arrêter?

J'ai le sentiment que c'est une mauvaise façon de le faire, mais il est un code que je ... hérité

Bien que la page affiche correctement sur la plupart des navigateurs, je reçois une situation où AVG Anti Virus détourne la page et la redirige vers une page hors site 404.

J'ai essayé de forcer un en-tête (Etat: 200 OK) en utilisant la commande d'en-tête en PHP, mais si je fais une boucle -I de la page, je reçois les éléments suivants ...

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 cette première ligne est la ligne pièges AVG pour sa redirection forcée. Sans réécrire le logiciel pour utiliser Mod_rewrite (que je ne comprends pas vraiment), comment puis-je (en PHP) arrêter la ligne "HTTP:/1/1 404 Not Found" envoyée dans les en-têtes lors de l'affichage de cette page?

Merci.

Répondre

4

Il n'y a aucun 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 sur les erreurs 404, mais il envoie toujours le code d'état 404, puis les pièges 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 va réécrire tout ce qui n'existe pas (et donnerait ainsi une 404) à votre index.php avec le chemin d'URL dans la chaîne de requête missing_content paramètre

4

Si ce que vous obtenez est un page Not Found erreur, ne pas en font état envoyer 200 OK. S'il vous plaît.

C'est l'une des "astuces" les plus agaçantes que les gens font pour une raison quelconque. Si les demandes de l'utilisateur de la page n'existent pas, dites-le lui, ainsi que son navigateur. Et pour les moteurs de recherche, sinon crawl/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 quelque chose d'autre au lieu de votre 404, il est son propre problème et ne pas essayer de combattre rendre votre service mensonge au navigateur :)

0

Certains navigateurs ne présentent pas le contenu de 404 pages si ce contenu est assez petit. Si le contenu de la page est plus important, ils l'affichent. Cette règle varie selon le navigateur. Essayez d'ajouter plus de contenu à votre page 404 et voir si cela aide.