.htaccess
ErrorDocument 404
다시 쓰기 규칙을 사용할 때 리디렉션이 없습니다. 500 내부 서버 오류가 발생합니다.
아니요 RewriteRule
时,ErrorDocument
제대로 작동합니다.
내 코드
RewriteEngine On <IfModule mod_rewrite.c> RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /stores/ [NC,L] ErrorDocument 404 /404.html </IfModule>
P粉6052337642024-01-11 09:26:16
이 규칙의 "문제"는 존재하지 않는 파일을 요청하고 해당 파일이 /subdirectory/ 하위 디렉터리에 없으면 무한 재작성 루프가 발생한다는 것입니다(따라서 500 내부 서버는 오류 참조) 다음 재작성을 시도하기 때문입니다.
실제로 달성하려는 목표를 지정하지 않았지만 /stores가 "숨겨진" 하위 디렉터리이고 /stores 하위 디렉터리의 실제 파일에 다시 쓰려고 했다고 가정합니다. 이것이 그러한 규칙이 Apache에 정의된 ErrorDocument 404 지시문과 함께 작동하는 유일한 방법입니다.
따라서 /stores 하위 디렉터리에 다시 쓸 때 다시 쓰기를 실행하기 전에 요청이 실제 파일에 매핑되는지 먼저 확인해야 합니다. 이렇게 하면 존재하지 않고 /stores 하위 디렉터리에 매핑되지 않은 파일에 대한 모든 요청이 Apache 정의 404 ErrorDocument로 전달됩니다.
예를 들어 다음 코드를 사용해 보세요.
으아악 <IfModule>
컨테이너가 필요하지 않습니다(하지만 RewriteEngine 지시어를 이 컨테이너 외부에 두는 것은 말이 되지 않습니다).
.htaccess 파일이 문서 루트에 있으면 RewriteBase 지시문이 필요하지 않습니다.
구조적으로 ErrorDocument를 먼저 정의하는 것이 가장 좋습니다.