특정 URL에 대한 액세스를 차단하려고 합니다.
https://example.com/questions/topic
다음 내용이 포함된 blacklist.txt 파일이 있습니다.
questions/topic deny
그러면 내 구성은 다음과 같습니다.
RewriteMap access txt:path_to_blacklist.txt
RewriteCond ${access:%{REQUEST_URI}} deny [NC]
RewriteRule .* - [F,L]
하지만 아직 열 수 있다는 것을 알았습니다https://example.com/questions/topic일반적으로 RewriteMap 대신 다음 구성을 사용하려고 하면:
RewriteCond %{REQUEST_URI} questions/topic [NC]
RewriteRule .* - [F,L]
성공적으로 작동하지만 URL에 액세스할 수 없습니다. 그렇다면 RewriteMap을 사용하여 어떻게 동일한 결과를 얻을 수 있습니까?
답변1
${REQUEST_URI}
임대 삭감을 포함하여 "뒤통수를 치는" 것은 감독이었습니다 . 당신이 가지고 있다면
/questions/topic deny
당신의 파일에 있으면 괜찮을 것입니다. (RewriteMap은정확히 일치키 조회의 경우 questions/topic
RewriteCond에 명시적으로 넣으면 정규식 일치이며 ^
고정 되지 않았으므로 $
귀하의 경우 하위 문자열 일치로 귀결됩니다. )
개인적인 취향에 따라 RewriteRule
매칭에 대해 아무 작업도 수행하지 않으므로 "아무거나 일치" RewriteRule ^
대신 RewriteRule .*
"아무거나 일치"라고 쓸 수 있습니다. 전자는 문자열을 볼 필요가 없기 때문에 아마도 더 빠를 것입니다. 여기서는 .*
탐욕스럽고 모든 문자열을 읽습니다.