J'ai défini dans mon bloc serveur:
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;
}
}
Cependant, chaque fois qu’il ya une erreur 404, cela ne passe pas par Nginx mais par la redirection Wordpress.
La même chose arrive avec 500 erreurs. La page d'erreur que j'ai définie dans Nginx ne s'affiche pas du tout. Je reçois le 500 écran vide par défaut.
Des idées sur ce qui pourrait être faux? Je crois que mon code est correct.
Avertissement
Avant de commencer, je vous recommande vivement de créer un thème enfant pour modifier en toute sécurité le thème actuel que vous utilisez. Ainsi, si vous devez mettre à jour votre thème, vos modifications ne seront pas écrasées.
Modification de votre page d'erreur actuelle
Si votre thème a déjà une page d’erreur personnalisée, recherchez un fichier 404.php
dans le répertoire racine de votre thème (/wp-content/themes/your-theme/404.php
) et copiez-le dans le dossier de votre thème enfant sous (/wp-content/themes/your-theme-child/404.php
). Modifiez cela à votre convenance.
Création d'une page d'erreur
Si votre thème n'a pas de page d'erreur 404 configurée, vous pouvez en créer une, mais au lieu de créer une page d'erreur à partir de rien, vous pouvez copier le fichier page.php
de votre thème dans votre répertoire de thème enfant et le renommer 404.php
(/wp-content/themes/your-theme-child/404.php
) et le modifier. ceci à votre goût.
Si vous souhaitez couvrir d'autres types d'erreurs/codes d'état HTTP, répétez les étapes ci-dessus et renommez simplement le fichier pour refléter le type de page d'erreur que vous souhaitez créer, tel que 404.php
ou 403.php
.
Voir la liste des codes d'état HTTP:
Si vous ne parvenez pas à créer un thème enfant ou si vous ne souhaitez pas en créer, vous pouvez toujours utiliser un plugin: https://wordpress.org/plugins/404page/
Sources:
NGINX
Nginx est pas mon expertise, j'utilise Apache. Alors sois indulgent avec moi:
# define error page
error_page 404 = @notfound;
# error page location redirect 302
location @notfound {
return 404 /custom-error-page;
}
Dans votre bloc php, mettez le fastcgi_intercept_errors
à on
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;
}
Voir pour plus d'informations: https://guides.wp-bullet.com/nginx-redirect-404-errors-to-homepage-wordpress/