web-dev-qa-db-ja.com

Nginx 404はPHPで動作しませんか?

404ファイルがあり、nginxで動作しています。ただし、404ファイルを変更してユーザーをリダイレクトすると、リダイレクトされません。

http://site.com/404.phpにアクセスすると、ユーザーがリダイレクトされます。

http://site.com/askllj299lakjにアクセスすると、空白のページになります。

404ファイルのコードは単なるヘッダーリダイレクトであり、

<?php
header('Location: http://site.com/');
exit;
?>

なぜこれがnginxで機能しないのですか?

1
Kyle

リダイレクトは、定義により、新しいリクエストを生成する302ヘッダーコードです。 404エラーページは行コードの終わりであるため、どこにもリダイレクトしないでください。さらに、どこでこれを行い、404エラーでユーザーをホームページにリダイレクトすると、検索エンジンがあなたのホームページを404 not foundエラーページとして扱うため、後であらゆる種類の問題が発生します。

この問題でホームページにリダイレクトする代わりに、ユーザーが検索しているページがサーバー上で見つからなかったことを示す標準のHTMLページを作成します(それで遊ぶことができ、 ユーモラスにします あなたのウェブサイトがそれに適している場合)。そのHTMLページでは、ユーザーを使用してホームページにリダイレクトするのを止めるものは何もありません...

<meta http-equiv="refresh" content="3;url=http://www.domain.com" />

3秒後にユーザーをホームページにリダイレクトします。これにより、検索が見つからなかったページがエンドユーザーに通知され、ユーザーがホームページにリダイレクトされ、すべての標準に準拠し、後で問題が発生することはありません。

1