문제

Nginx+PHP (FastCGI)는 저에게 좋습니다. 존재하지 않는 PHP 파일로의 경로를 입력하면 기본 404 오류 페이지 (유효하지 않은 .html 파일의 경우)를 가져 오는 대신 "입력 파일 없음"을 얻습니다.

이 404 오류 페이지를 사용자 정의하려면 어떻게해야합니까?

도움이 되었습니까?

해결책

nginx에서 error_page 속성을 사용합니다 구성.

예를 들어, 404 오류 페이지를 /404.html, 사용

error_page 404 /404.html;

500 오류 페이지를 설정합니다 /500.html 다음과 같이 쉽습니다.

error_page 500 /500.html;

다른 팁

nginx.conf의 모든 위치 블록에 대한 사용자 정의 오류 페이지 또는 사이트 전체에 대한 전역 오류 페이지를 설정할 수 있습니다.

특정 위치에 대한 간단한 404 찾기 페이지로 리디렉션하려면 :

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

404 페이지의 사이트 :

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

표준 오류 코드를 함께 추가하여 여러 유형의 오류에 대한 단일 페이지를 가질 수 있습니다.

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

HTTP 섹션에 정의 된 Server2라는 업스트림 서버가 있다고 가정하면 완전히 다른 서버로 리디렉션하려면 다음과 같습니다.

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

그만큼 수동 더 자세한 정보를 제공하거나 웹의 실제 예제에 대해 Nginx.conf 및 Error_Page라는 용어를 Google에서 검색 할 수 있습니다.

구문에주의하십시오! 큰 거북이는 그들을 상호 교환 적으로 사용했지만 :

error_page 404 = /404.html;

상태 코드가 200 인 404.html 페이지를 반환합니다 (=이 페이지에이를 전달했기 때문에).

error_page 404 /404.html;

(원본) 404 오류 코드로 404.html 페이지를 반환합니다.

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

"ERRER_PAGE"매개 변수는 리디렉션을 만들어 요청 메소드를 "get"으로 변환하면 사용자 정의 응답 페이지가 아닙니다.

가장 쉬운 솔루션은입니다

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

그건 그렇고, Nginx가 PHP 스크립트로 404 상태를 처리하려면 추가해야합니다.

[fastcgi_intercept_errors][1] on;

예를 들어

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

이 답변은 더 이상 권장되지 않습니다 try_files 보다 빠르게 작동합니다 if 이 맥락에서. 간단히 추가하십시오 try_files PHP 위치 블록에서 파일이 존재하는지 테스트하려면 404를 반환합니다.

location ~ \.php {
    try_files $uri =404;
    ...
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top