요청의 일부가 255 자보다 짧을 경우 (캐시와 255 자의 파일 이름 제한이 리눅스에서 발생해야 함) 아파치가 특정 재 작성을 건너 뛰도록합니다.htaccess 질의 문자열의 일부 길이를 확인하십시오.
나는이 작성했습니다 :
RewriteCond %{QUERY_STRING} "utm_campaign"
RewriteCond %{QUERY_STRING} "utm_medium"
RewriteCond %{QUERY_STRING} ^(.*\/)([^\/\n]{0,255})$
RewriteRule .* - [S=2]
을 그리고 나는 URL (q=path/to/page?utm_campaign=xxx&utm_medium=xxx
)에 대한 정규식 테스트이 후이 규칙이 여전히 실행 얻을 때문에 QUERY_STRING 변수가 다른 콘텐츠를 갖고있는 것 같아요하지만 일치 . 일치해야하는 부분은이 경우 page?utm_campaign=xxx&utm_medium=xxx
(및 이후의 모든 것)이 값이 255 자보다 짧으면 다음 2 개의 다시 쓰기 규칙을 건너 뛸 수 있습니다.
나는 Drupal 6 btw를 사용하고 있습니다.
귀하의 규칙은 정확합니다. 문제는 다른 것입니다. 귀하의 진술에 약간의 혼란이 있습니다 ...주의하시기 바랍니다. mod_rewrite에서 사용 가능한 아파치 변수의 내용은 다음과 같습니다 : 액세스 된 URL이 'http://www.example.com/path/file.ext?var= 1 & var2 = 2' ...'% {REQUEST_URI}'는'/ path/file.ext'이고,'% {QUERY_STRING}'은'var = 1 & var2 = 2' ... 그래서 여러분의 예제에서'page?' 변수의 일부가 아닙니다 ... 어떤 차이가 있거나 문제를 해결하는 경우 확실하지 않습니다. –
이것은 실제로 문제의 핵심이었습니다. RewriteCond % {REQUEST_URI} _ % {QUERY_STRING}^(. * \ /) ([^ \/\ n] {0,255}) $ (밑줄은 물음표 대신 사용됩니다.) – MidnightMotion