2012-02-16 3 views
1

URL에 path=\이 포함 된 주소 (예 : _wpnonce=1234567890)를 액세스하려는 모든 클라이언트 (.htaccess 사용)를 필터링하려고합니다.문자열을 포함하고 있지만 하위 문자열을 포함하지 않는 Apache URL을 모두 필터링하는 방법

로직은 _wpnonce 매개 변수가있는 사람들을 제외하고 모두 차단합니다. 이 문자열을 포함하는 경우 시험없이

블로킹은 다음과 같습니다 :도 내 문자열 부정을 포함 할 수있는 방법이

RewriteCond %{QUERY_STRING} (menu|mod|path|tag)\=\.?/? [NC,OR] 

있습니까?

답변

0

문서는 당신이 부정적 예측 주장 사용할 수 있어야하므로 패턴이, 펄 호환 정규 표현식 것을 말한다 :

RewriteCond %{QUERY_STRING} ^(?!.*_wpnonce=1234567890).*(menu|mod|path|tag)\=\.?/? [NC,OR] 

그것을 별도의 RewriteCond에 넣어 명확하게 할 수 있지만, [OR]을 모두 해결할 수만 있다면 제공됩니다. [OR]이 아닌 경우 다음과 같이 작성하면됩니다.

RewriteCond %{QUERY_STRING} !_wpnonce=1234567890 [NC] 
RewriteCond %{QUERY_STRING} (menu|mod|path|tag)\=\.?/? [NC] 
+0

두 번째 버전을 사용했으며 작동합니다. 목록이 길어지면서 (차단 선이 많아짐) 먼저 먼저 넣어야했습니다. 그렇지 않으면 앞에있는 것을 무시하고있었습니다. 이것 이후에도 다른 정의가 있습니다. RewriteCond % {QUERY_STRING}! _wpnonce = [a-z0-9] {10} [NC] RewriteCond % {QUERY_STRING} (메뉴 | 모듈 | 경로 | 태그) \ = \.? /? [NC, OR] ' – conualfy

관련 문제