1

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

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

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

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

ありがとう。

4

3 に答える 3

4

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

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

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

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

于 2008-10-03T11:59:34.053 に答える
4

ページが見つかりませんというエラーが表示された場合は、ステータス200をOKに送信しないでください。お願いします。

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

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

于 2008-10-03T12:00:07.873 に答える
0

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

于 2012-04-20T11:50:51.523 に答える