PHP-カスタムエラー処理。リダイレクトされた404は、AVG Anti-Virusによってハイジャックされています。止める方法は?

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

質問

PHP / Apacheのカスタム404エラー処理を使用して特定のページを表示するWebサイトがあります。
例えば http://metachat.org/recent

これはこれを行うには悪い方法だと感じていますが、私が継承したコードです...

ほとんどのブラウザではページが正しく表示されますが、AVG Anti-Virusがページをハイジャックしてオフサイト404ページにリダイレクトしている状況が発生しています。

PHPのheaderコマンドを使用してヘッダー(ステータス:200 OK)を強制しようとしましたが、ページのcurl -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を使用するようにソフトウェアを書き直さずに(実際には理解していません)、「HTTP:/ 1/1 404 Not Found」を(PHPで)停止するにはどうすればよいですか?このページを表示するときにヘッダーで行が送信されますか?

ありがとう。

役に立ちましたか?

解決

URL書き換え(mod_rewrite)を使用するか、欠落しているページを作成する以外に方法はありません。何が起こっているのかというと、クライアントは存在しないページを要求しているということです。 Apacheは404エラー時に特別なページを提供するように設定されていますが、404ステータスコードを送信し、AVGはそれをトラップします。

したがって、次のようなことができます:

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

これにより、存在しないものすべてが書き換えられ(したがって404が返されます)、missing_contentクエリ文字列パラメーターのURLパスを使用してindex.phpになります

他のヒント

ページが見つかりませんエラーの場合、ステータス200をOKに送信するしない。お願いします。

これは最も厄介な「トリック」の1つです。人々は何らかの理由でやる。ユーザーがリクエストしたページが存在しない場合は、ユーザーだけでなくブラウザにもこれを伝えます。それ以外の場合は、それが実際の応答であるとみなしてカスタムエラーページをクロール/キャッシュします。

誰かが404の代わりに何かを表示するソフトウェアをインストールしている場合、それは彼自身の問題であり、あなたのサービスがブラウザに嘘をつくように戦わないでください:)

一部のブラウザーは、そのコンテンツが非常に小さい場合、404ページのコンテンツを表示しません。より大きなページコンテンツがある場合は、表示されます。このルールはブラウザごとに異なります。 404ページにさらにコンテンツを追加してみて、それが役立つかどうかを確認してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top