존재하지 않는 디렉토리에 존재하지 않는 파일이 있는 htaccess 문제

존재하지 않는 디렉토리에 존재하지 않는 파일이 있는 htaccess 문제

나는 잘 작동하는 다음 .htaccess파일을 사용하고 있지만 루트 디렉터리와 하위 디렉터리(하위 디렉터리의 존재 여부에 관계없이)에 존재하지 않는 파일에 액세스하려는 모든 시도를 기본 도메인 이름으로 다시 전달하고 싶습니다.

시도했지만 FallbackResource500 시리즈 오류가 발생했습니다.

RewriteEngine On

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://xxxxxxxxx.xxxxx/.*$ [NC]
RewriteRule \.(gif|jpg|jpeg|bmp|zip|rar|mp3|flv|swf|png|css|pdf)$ -     [F]

# browser requests PHP
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php
RewriteRule ^/?(.*)\.php$ /$1 [L,R=301]

# check to see if the request is for a PHP file:
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^/?(.*)$ /$1.php [L]

ErrorDocument 500 /redirect
ErrorDocument 500 /redirect
ErrorDocument 500 /redirect
ErrorDocument 404 /error
ErrorDocument 401 /redirect
ErrorDocument 403 /redirect

어떤 도움이라도 대단히 감사하겠습니다.

답변1

FallbackResource결과적으로 URL은 다음과 같습니다.내부적으로 다시 작성됨다른 파일로. 그러나 나는 생각했을 것입니다외부 리디렉션이 상황에서는 바람직할까요? 또한 FallbackResource기존 mod_rewrite 지시어와 충돌할 수도 있습니다. (그러나 FallbackResource잘못된 구문이 있을 수 있으므로 in-place 사용을 확인하는 것이 유용했을 것입니다 .)

ErrorDocument마지막 mod_rewrite 지시어 뒤( 지시어 앞) 에 다음과 같이 시도해 보십시오 .

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ / [QSD,R=302,L]

위의 내용은... 요청이 파일에 매핑되지 않고 디렉터리에 매핑되지 않으면 문서 루트(임시 302)로 리디렉션됩니다. QSD요청에서 쿼리 문자열을 제거하는 데 필요합니다 .

곁에:이것이 우려되는 경우 SEO(또는 사용자) 관점에서는 권장되지 않습니다.


ErrorDocument 500 /redirect
ErrorDocument 500 /redirect
ErrorDocument 500 /redirect
ErrorDocument 404 /error
ErrorDocument 401 /redirect
ErrorDocument 403 /redirect

(불필요하게 500 오류 문서를 두 번 이상 정의한 것 외에...)문서지시문 에 지정된 것은 ErrorDocument루트 상대여야 합니다.파일 시스템길. 예. /redirect.php(근데 실제로는 그렇지 않아요리디렉션/redirect그렇습니까?) 아마도 실제로는 (추가 재작성이 필요한) 파일이 없을 것입니다 .

관련 정보