404ファイルがあり、nginxで動作しています。ただし、404ファイルを変更してユーザーをリダイレクトすると、リダイレクトされません。
http://site.com/404.php
にアクセスすると、ユーザーがリダイレクトされます。
http://site.com/askllj299lakj
にアクセスすると、空白のページになります。
404ファイルのコードは単なるヘッダーリダイレクトであり、
<?php
header('Location: http://site.com/');
exit;
?>
なぜこれがnginxで機能しないのですか?
リダイレクトは、定義により、新しいリクエストを生成する302ヘッダーコードです。 404エラーページは行コードの終わりであるため、どこにもリダイレクトしないでください。さらに、どこでこれを行い、404エラーでユーザーをホームページにリダイレクトすると、検索エンジンがあなたのホームページを404 not foundエラーページとして扱うため、後であらゆる種類の問題が発生します。
この問題でホームページにリダイレクトする代わりに、ユーザーが検索しているページがサーバー上で見つからなかったことを示す標準のHTMLページを作成します(それで遊ぶことができ、 ユーモラスにします あなたのウェブサイトがそれに適している場合)。そのHTMLページでは、ユーザーを使用してホームページにリダイレクトするのを止めるものは何もありません...
<meta http-equiv="refresh" content="3;url=http://www.domain.com" />
3秒後にユーザーをホームページにリダイレクトします。これにより、検索が見つからなかったページがエンドユーザーに通知され、ユーザーがホームページにリダイレクトされ、すべての標準に準拠し、後で問題が発生することはありません。