Apache ErrorDocuments를 일반 http 요청에 액세스할 수 없게 만드는 방법은 무엇입니까?

Apache ErrorDocuments를 일반 http 요청에 액세스할 수 없게 만드는 방법은 무엇입니까?

아파치 문서설명하다, 다양한 HTTP 오류에 대한 사용자 정의 오류 페이지를 설정하고 상태 코드(401, 403, 404, 500, 503 등)로 오류를 식별하는 방법을 설명합니다.

그러나 문서의 내용은 본질적으로 다음과 같습니다. 오류가 발생하면 Apache는 문서에 대한 내부 하위 요청을 생성합니다.

예를 들어,

ErrorDocument 404 /errors/dunno.html
ErrorDocument 500 /errors/sux.html

이 줄은 404(파일을 찾을 수 없음) 또는 500(내부 서버) 오류가 발생한 경우 문서가 제공되도록 합니다 /errors/dunno.html./errors/sux.html

그러나 이는 http 요청이 https://my.server/errors/sux.html일반 파일로 제공된다는 의미이기도 합니다.sux.html

이것은 내가 원하는 것이 아닙니다.

오류 페이지가 서버 외부에 존재하고 DocumentRoot일반적인 http 쿼리를 사용하여 완전히 액세스할 수 없기를 바랍니다. 유일한 경우는 Apache가 ErrorDocument구성 지시문의 영향을 받는 (200이 아닌) http 응답을 제공해야 하는 경우입니다.

어떻게든 할 수 있을까?

답변1

실제로 테스트해 보셨나요 ErrorDocument? 이 일을 하면서 느낀 점 두 가지..

가짜 URL을 기반으로 API를 설정하려고 합니다. 여기서 404 errordoc는 요청된 URL을 구문 분석한 후 콘텐츠를 반환하는 기본 API PHP 스크립트입니다. 브라우저에서는 제대로 작동합니다. 표시된 URL은 ErrorDocument.

그러나 AngularJS는 메시지 내용이 요청된 json임에도 불구하고 404 상태 코드에 대해 불평합니다.

그래서...

Apache와 ErrorDocuments는 요청된 URL을 대신 표시할 수 있습니다 ErrorDocument. 따라서 이름 지정 체계를 추측할 수 없으면 직접 액세스가 불가능합니다.

클라이언트는 404200/OK 대신 하나 이상의 적절한 HTTP 상태 코드를 계속 수신합니다.

Apache는 요청을 404로 기록하고 이 방식으로 기록되도록 구성된 경우 요청된 URL을 표시합니다.

(지시문을 추가하는 대신) 기본 구성을 사용하여 Debian 및 Ubuntu 시스템에서 apache2.4.x의 기본 설치를 테스트했습니다 ErrorDocument 404 /test.html.

관련 정보