2009-04-07 4 views
5

/foo/.htaccess가하는이 작품을 만드는 방법? 한다 RewriteCond % {ENV : UNIQUE_ID}! % {QUERY_STRING}

RewriteRule ^(.*)$ /bar/?%{ENV:UNIQUE_ID} 

/bar/.htaccess는 요청이 내부되지 않았 음을 인식 할 필요가 내부 리디렉션, 문제는 그 I 을 비교 한 작업

RewriteCond %{ENV:UNIQUE_ID} !%{QUERY_STRING} 

을 만드는 방법을 알아낼 수 없습니다 심지어

오른쪽 오에 구문 문제가

가 일치하지 않습니다 , 나는 가정

RewriteCond %{QUERY_STRING} %{QUERY_STRING} 
표현을 이스케이프하면 %는 도움이되지 않습니다.

I 모두 가변 위가 표시 할

RewriteRule ^(.*)$ /test/%{QUERY_STRING}/%{ENV:UNIQUE_ID} 

같은 내부 리디렉션에서 동일한 값을 가지고 시험했다.

서버는 아파치/2.2.3입니다

감사합니다, Laurian

답변

15

슬프게도 직접 ​​mod_rewrite를 두 변수를 비교할 수 없습니다.

을 (. 또는 적어도 나는이 작업을 수행하는 방법을 알고하지 않습니다)하지만 이것에 대한 해결 방법은 :

RewriteCond %{ENV:UNIQUE_ID}:%{QUERY_STRING} !^(.+):\1$ 

내가 분리로 :을 선택하지만 당신은 당신이 경우 다른 구분 기호를 사용할 수 있습니다 고 싶어요. 그리고 UNIQUE_ID 값의 구조를 지정할 수 있으면 그렇게해야합니다.

+1

이렇게 유용합니다! 나는 당신이 그런 여러 환경 적 가치를 결합 할 수 있다는 것을 깨닫지 못했습니다. –

+0

실제로 이것은 트릭을 알아야하는 필수 아이템입니다! 감사! – greydet

0

리퍼러가 처음으로 사용자가 방문했지만 자신의 웹 사이트에서 링크를 사용하지 않은 경우와 같이 리퍼러가 동일한 도메인이 아닌 경우 HTTP_REFERRER를 확인할 수 있습니다. 이미지에 대한 핫 링크를 방지하기 위해 동일한 기술이 사용됩니다.

관련 문제