PHP-カスタムエラー処理。リダイレクトされた404は、AVG Anti-Virusによってハイジャックされています。止める方法は?
-
03-07-2019 - |
質問
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ページにさらにコンテンツを追加してみて、それが役立つかどうかを確認してください。