Frage

Nginx + PHP (auf FastCGI) funktioniert gut für mich. Wenn ich einen Pfad zu einer PHP-Datei eingeben, die nicht existieren, statt die Standard-404-Fehlerseite bekommen (die Kosten für ungültige HTML-Datei kommt), habe ich einfach eine „No Eingabedatei angegeben.“ Erhalten.

Wie kann ich diese 404-Fehlerseite anpassen?

War es hilfreich?

Lösung

Sie verwenden die error_page Eigenschaft in der nginx Config .

Zum Beispiel, wenn Sie beabsichtigen, die 404-Fehlerseite auf /404.html, verwenden Sie

error_page 404 /404.html;

Zur Einstellung der 500-Fehlerseite /500.html ist genauso einfach wie:

error_page 500 /500.html;

Andere Tipps

Sie können Setup eine benutzerdefinierte Fehlerseite für jeden Standort Block in Ihrem nginx.conf oder eine globale Fehlerseite für die Website als Ganzes.

So leiten Sie auf eine einfache 404 nicht gefunden Seite für einen bestimmten Standort:

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

Eine Seite breite Seite 404:

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

Sie können die Standard-Fehlercodes anhängen zusammen eine einzelne Seite für verschiedene Arten von Fehlern haben:

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

Um zu einem ganz anderen Server zu umleiten, vorausgesetzt, Sie ein Upstream-Server mit dem Namen server2 in Ihrem http Abschnitt definiert hatten:

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

Die Handbuch können Sie weitere Informationen geben, oder Sie kann suchen google für die Begriffe nginx.conf und error_page für reale Beispiele im Web.

Seien Sie vorsichtig mit der Syntax! Große Schildkröte verwendet sie austauschbar, aber:

error_page 404 = /404.html;

Wird die 404.html Seite mit dem Statuscode 200 zurückgeben (da =, dass auf dieser Seite weitergeleitet hat)

error_page 404 /404.html;

Wird die 404.html Seite zurückkehren mit einem (dem Original) 404 Fehlercode.

https://serverfault.com/questions/295789/nginx -return-correct-Header-mit-custom-Fehler-Dokumente

Die „error_page“ Parameter machen eine Umleitung, die Request-Methode der Umstellung auf „GET“, es ist keine individuelle Antwort-Seite.

Die einfachste Lösung ist

     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;
        }

By the way, wenn Sie Nginx wollen 404 Status von PHP-Skripten zurückgegeben verarbeiten, müssen Sie hinzufügen

[fastcgi_intercept_errors][1] on;

z.

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

Diese Antworten sind nicht mehr empfohlen, da try_files arbeitet schneller als if in diesem Zusammenhang. Einfach try_files in Ihrem PHP-Standort Block hinzufügen zu testen, ob die Datei vorhanden ist, andernfalls ein 404 zurück.

location ~ \.php {
    try_files $uri =404;
    ...
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top