web-dev-qa-db-ja.com

Nginx 404、500エラーとWordpress

私は自分のサーバーブロックで定義しました:

 server {

  error_page 401 403 404 /custom_404.html;
        location = /custom_404.html {
                root /var/www/html;
                internal;
        }

  error_page 500 502 503 504 /custom_50x.html;
        location = /custom_50x.html {
                root /var/www/html;
                internal;
        }

}

ただし、404エラーが発生するたびに、これはNginxを通過しませんがWordpressリダイレクトを通過します。

500エラーでも同じことが起こります。私がNginxで定義したエラーページはまったく表示されません。デフォルトの500空白の画面が表示されます。

何が間違っている可能性がありますかについての任意のアイデア?私のコードは正しいと思います。

1
Joanna Mikalai

警告

始める前に、現在使用しているテーマを安全に変更するために childテーマ を作成することを強くお勧めします。そうすれば、テーマを更新する必要がある場合でも、変更内容は上書きされません。

現在のエラーページを変更しています

テーマに既にカスタムエラーページがある場合は、テーマのルートディレクトリ(404.php)で/wp-content/themes/your-theme/404.phpファイルを探し、それを(/wp-content/themes/your-theme-child/404.php)の下の子テーマのフォルダにコピーします。あなたの好みに合わせてこれを修正してください。

エラーページの作成

テーマに404エラーページが設定されていない場合は作成できますが、エラーページを最初から作成する代わりに、テーマのpage.phpファイルを子テーマディレクトリにコピーして404.php/wp-content/themes/your-theme-child/404.php)に名前を変更しあなたの好みに合わせて。

他の種類のエラーやHTTPステータスコードをカバーしたい場合は、上記の手順を繰り返し、作成したいエラーページの種類を反映するように404.php403.phpのようにファイルの名前を変更します。

HTTPステータスコードのリストを参照してください。

子テーマを作成できない場合や作成したくない場合は、常にプラグインを使用できます。 https://wordpress.org/plugins/404page/

出典:


_ nginx _
Nginxは ではありません 私の専門知識です、私はApacheを使用しています。だから私と一緒に負担します。

# define error page
error_page 404 = @notfound;

# error page location redirect 302
location @notfound {
    return 404 /custom-error-page;
}

あなたのphpブロックでfastcgi_intercept_errorsonに設定してください

location ~ \.php$ {
    include /etc/nginx/fastcgi_params;
    # intercept errors for 404 redirect
    fastcgi_intercept_errors on;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

詳細については参照してください: https://guides.wp-bullet.com/nginx-redirect-404-errors-to-homepage-wordpress/

1
Remzi Cavdar