Nginx - Anpassen Seite 404
-
06-07-2019 - |
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?
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;
...
}