Apache ErrorDocument가 301 대신 404를 반환하도록 할 수 있나요?

Apache ErrorDocument가 301 대신 404를 반환하도록 할 수 있나요?

.htaccess안에는

ErrorDocument 404 http://foo.com/404.html

파일을 찾을 수 없음 오류를 복구하고 대신 404 페이지를 표시한다는 의미에서 작동하지만 작동 방식은 301을 사용하여 잘못된 URI를 내 404.html페이지로 리디렉션하는 것입니다.

이는 검색 엔진과 크롤러가 301 코드가 아닌 404 코드를 보게 되고 삭제된 페이지를 해당 색인에서 제거하지 않기 때문에 좋지 않습니다.

파일을 찾을 수 없다는 오류가 발생하면 Apache가 이 404 페이지의 내용을 제공하지만 여전히 301 대신 404 코드를 반환하도록 할 수 있습니까?

답변1

URL이 아닌 절대 또는 상대 경로를 사용해야 합니다.

내 apache2.conf :

ErrorDocument 403 /error/403.html
ErrorDocument 404 /error/404.html
ErrorDocument 500 /error/500.html

답변2

외부 URL을 가리키지 마세요.

Apache의 문서에 따르면:

구문은,

ErrorDocument <3-digit-code> <action>

행동이 가능한 곳,

  • 표시할 텍스트입니다. 텍스트를 따옴표(")로 묶습니다.
  • 리디렉션할 외부 URL입니다.
  • 리디렉션할 로컬 URL입니다.

외부 URL을 가리키면 실제 리디렉션이 발생하는 반면, 로컬 URL을 사용하는 것은 내부입니다.

따라서 파일의 내용을 렌더링하려면 간단히 다음과 같이 지정하면 됩니다.

ErrorDocument 404 /404.html

작업에 올바른 상태 코드를 사용하세요.

검색 엔진과 크롤러는 결국 404 코드가 아닌 301 코드와삭제된 페이지는 해당 색인에서 제거되지 않습니다..

페이지의 경우사용된존재하지만 현재는 존재하지 않는 경우 올바른 응답 코드는 다음과 같습니다.410 곤. 410은 "이봐, 그건 존재하지 않아"라고 말하는 코드인 반면, 404는 현재 존재하지 않는 페이지에 반복적으로 액세스하려고 시도한 후에만 의미하는 것으로 간주됩니다.

답변3

Maxence 및 AD7six의 답변에 대한 의견(나는 serverfaul에 대한 평판이 충분하지 않으며 스택 교환 평판은 분명히 계산되지 않습니다):

방금 이 방법으로 문제를 해결했지만 URL이 여전히 사용자가 호출하려는 URL이기 때문에 포함된 그림과 스타일이 누락되었습니다.

해결책은 다음과 같이 404 문서의 헤드에 기본 태그를 추가하는 것입니다.

ErrorDocument 404

또는 프로토콜/도메인 이름이 있거나 없는 절대 URL을 사용합니다.

관련 정보