3 votes

L'option "return 404 ;" ne respecte pas la configuration de la page d'erreur personnalisée dans Nginx.

J'ai mis en place ma page 404 personnalisée pour la plupart des cas en Nginx en utilisant la méthode globale error_page dans le bloc serveur, cependant, si je fais ce qui suit à l'intérieur d'un bloc d'emplacement :

if ($uri ~* ...) {return 404;}

alors la valeur par défaut Nginx La page 404 est retournée.

Existe-t-il un moyen de renvoyer la page personnalisée dans ce cas ?

Mise à jour : actuellement j'ai quelque chose comme ceci

server {
    ...
    error_page    404    /html/error/404.html;
    ...
    root           /home/www-data/mysite/static;

    location ^~ /blah/blah/ {
        if ($uri ~* ...) { return 404; }
        ...
    }

    location ^~ /html/error/ {
        internal;
    }
}

1voto

cdwhite Points 1

Au lieu de retourner directement 404, utilisez plutôt :

error_page 404 /404.html;
location / {
            try_files $uri =404;
}

Cela produirait un code d'état http 404 avec une page d'erreur 404 personnalisée. J'espère que cela vous aidera.

0voto

zumb Points 19

"/html/error" ne devrait pas se trouver à la fois dans le chemin racine (absolu) et dans le chemin error_path (relatif).

Où se trouve la racine du document ? S'agit-il vraiment de '/home/www-data/mysite/static' alors qu'il existe un sous-répertoire 'html/' ? Êtes-vous sûr que la racine ne devrait pas être '/home/www-data/mysite/static/html' ?

Quel est le motif sur le côté droit de la correspondance ~* ? Vous avez peut-être une erreur d'expression qui fait que ça correspond à tout.

Il se peut aussi que le répertoire racine soit erroné et que nginx renvoie un message 404 parce qu'il ne trouve pas le fichier, et non parce que le motif "if" correspond.

Par défaut, le journal des erreurs de nginx enregistrera le chemin d'accès réel au système de fichiers auquel nginx a tenté d'accéder pour une requête qui a renvoyé 404 en raison d'un fichier manquant. Consultez la documentation de nginx pour log_not_found et error_log si ces erreurs ne s'affichent pas dans le journal des erreurs.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X