나는 잘 작동하는 다음 .htaccess
파일을 사용하고 있지만 루트 디렉터리와 하위 디렉터리(하위 디렉터리의 존재 여부에 관계없이)에 존재하지 않는 파일에 액세스하려는 모든 시도를 기본 도메인 이름으로 다시 전달하고 싶습니다.
시도했지만 FallbackResource
500 시리즈 오류가 발생했습니다.
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
그렇습니까?) 아마도 실제로는 (추가 재작성이 필요한) 파일이 없을 것입니다 .