Question

Nginx + PHP (sur fastCGI) fonctionne très bien pour moi. Lorsque j'entre un chemin d'accès à un fichier PHP qui n'existe pas, au lieu d'obtenir la page d'erreur 404 par défaut (qui s'applique à tout fichier .html non valide), j'obtiens simplement un message "Aucun fichier d'entrée spécifié.".

Comment personnaliser cette page d'erreur 404?

Était-ce utile?

La solution

Vous utilisez la propriété error_page dans nginx config .

Par exemple, si vous souhaitez définir la page d'erreur 404 sur /404.html , utilisez

.
error_page 404 /404.html;

Le réglage de la page d'erreur 500 sur /500.html est aussi simple que:

error_page 500 /500.html;

Autres conseils

Vous pouvez configurer une page d'erreur personnalisée pour chaque bloc d'emplacement de votre nginx.conf ou une page d'erreur globale pour le site dans son ensemble.

Pour rediriger vers une simple page 404 non trouvée pour un emplacement spécifique:

location /my_blog {
    error_page    404 /blog_article_not_found.html;
}

Une page de l'ensemble du site 404:

server {
    listen 80;
    error_page  404  /website_page_not_found.html;
    ...

Vous pouvez associer des codes d'erreur standard pour créer une seule page pour plusieurs types d'erreur:

location /my_blog {
    error_page 500 502 503 504 /server_error.html
}

Pour rediriger vers un serveur totalement différent, en supposant que vous disposiez d'un serveur en amont nommé server2 défini dans votre section http:

upstream server2 {
    server 10.0.0.1:80;
}
server {
    location /my_blog {
        error_page    404 @try_server2;
    }
    location @try_server2 {
        proxy_pass http://server2;
    }

Le manuel peut vous donner plus de détails ou vous pouvez effectuer une recherche. google pour les termes nginx.conf et error_page pour des exemples concrets sur le Web.

Faites attention à la syntaxe! Great Turtle les utilisait de manière interchangeable, mais:

error_page 404 = /404.html;

Renverra la page 404.html avec un code d'état de 200 (car = l'a relayé sur cette page)

error_page 404 /404.html;

Renverra la page 404.html avec un code d'erreur 404 (d'origine).

https://serverfault.com/questions/295789/nginx -retour-corriger-en-têtes-avec-documents-d'erreur personnalisés

La " error_page " Ce paramètre effectue une redirection en convertissant la méthode de requête en "GET", ce n'est pas une page de réponse personnalisée.

La solution la plus simple est

     server{
         root /var/www/html;
         location ~ \.php {
            if (!-f $document_root/$fastcgi_script_name){
                return 404;
            }
            fastcgi_pass   127.0.0.1:9000;
            include fastcgi_params.default;
            fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;
        }

Au fait, si vous souhaitez que Nginx traite l'état 404 renvoyé par les scripts PHP, vous devez ajouter

.

[fastcgi_intercept_errors] [1] on;

ex.

     location ~ \.php {
            #...
            error_page  404   404.html;
            fastcgi_intercept_errors on;
         }

Ces réponses ne sont plus recommandées car try_files fonctionne plus rapidement que if dans ce contexte. Ajoutez simplement try_files dans votre bloc d’emplacement php pour vérifier si le fichier existe, sinon retournez un 404.

location ~ \.php {
    try_files $uri =404;
    ...
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top