404 대신 Apache에서 410을 제공하는 방법

404 대신 Apache에서 410을 제공하는 방법

우리 사이트에서는 콘텐츠가 만료된 페이지를 많이 제거하는 경향이 있으며, 서버에 존재하지 않는 페이지(물리적 파일)에 대한 요청에 대해 404 대신 http 상태 410을 반환하려고 합니다(전체 사이트가 만들어집니다). 정적 파일로 구성).

우리는 시도했다

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*$ - [G,L]

~에서이 블로그 게시물하지만 이는 전체 사이트를 손상시켜 모든 요청에 ​​대해 410을 제공합니다.

우리는 아파치 2.2.3을 사용하고 있습니다

답변1

    Redirect gone /path/to/resource

올바른 방법입니다. 이로 인해 오류가 발생하는 경우 mod_alias서버에 로드되었는지 확인하세요.

답변2

나는 크리스의 대답이 꽤 좋다고 생각합니다. PHP 스크립트를 사용하지 않으려면 다음과 같이 될 수 있습니다.

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$                - [G,L]

잊지 마세요.mod_rewrite페이지에도 컴패니언이 있습니다.mod_rewrite 위키.

답변3

errorpage.php(또는 다른 스크립팅 언어)를 생성하고 해당 파일이 410 Gone의 http 상태 헤더를 반환하도록 하고, 기본적으로 요청된 URL이 파일이나 디렉터리(예: 파일이 존재하지 않음) 그런 다음 errorpage.php 문서를 로드하십시오.

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /errorpage.php [L]

errorpage.php는 다음과 같이 간단할 수 있습니다.

<?php header($_SERVER['SERVER_PROTOCOL'].' 410 Gone');

또한 errorpage.php에 삭제된 페이지 목록(또는 다른 추적 수단)을 포함시켜 리소스가 이전에 존재했는지 여부에 따라 404 또는 410 http 상태를 적절하게 반환할 수 있습니다.

관련 정보