Nginx - Özelleştirme 404 sayfa

5 Cevap php

(FASTCGI on) nginx + PHP benim için çok çalışır, ama ben bunun yerine (geçersiz. Html dosyası olarak geliyor), varsayılan 404 hata sayfası alma, çıkmazsa bir PHP dosyası için bir yol girin, ben sadece "olsun girdi dosyası belirtilmedi. ".

Nasıl bu sayfayı özelleştirebilirsiniz?

5 Cevap

Siz nginx içerisinde error_page özelliğini kullanın config. Bunu yapmak için nasıl gösterir this hangi bulundu.

Eğer kurulum nginx.conf her yer blok, ya da bir bütün olarak site için küresel bir hata sayfası için özel bir hata sayfası yapabilirsiniz.

Belirli bir konumu için basit bir 404 sayfa bulunamadı yönlendirmek için:

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

Bir site geniş 404 sayfa:

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

Siz hataları çeşitli türleri için tek bir sayfa için birlikte standart hata kodları ekleyebilirsiniz:

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

Eğer http bölümünde tanımlanan server2 adında bir akış yukarı sunucuyu vardı varsayarak, tamamen farklı bir sunucuya yönlendirmek için:

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

manual size daha fazla bilgi verebilir, ya da şartları nginx.conf ve web üzerinde gerçek hayat örnekleri için error_page için google arama yapabilirsiniz.

"Error_page" parametre yeterli değildir.

Kolay çözüm

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

Eğer Nginx PHP tarafından döndürülen 404 durumunu işlemek istiyorsanız arada, eklemek gerekir

fastcgi_intercept_errors üzerine;

Örneğin

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

try_files Bu bağlamda if daha hızlı çalışır çünkü bu cevaplar artık tavsiye edilir. Basitçe aksi takdirde 404 dönmek, dosya varsa test için php yer bloğunda try_files ekleyin.

location ~ \.php {
    try_files $uri =404;
    ...
}

Sözdizimi ile dikkatli olun! Büyük Kaplumbağa birbirinin yerine kullanılır, ancak:

error_page 404 = /404.html;

(= Bu sayfada geçirilen çünkü) 200 durum koduyla 404.html sayfasını dönecektir

error_page 404 /404.html;

Bir (orjinal) 404 hata koduyla 404.html sayfasını dönecektir.

http://serverfault.com/questions/295789/nginx-return-correct-headers-with-custom-error-documents