2012-02-12 3 views
-1

내 값 IS_HTTP에 따라 URL이 https 또는 http 여야하는지 여부를 아래 코드에서 결정합니다.htaccess rewriterules에서 1 폴더 제외

나는 항상 http://mydomain.com에 대한 (HTTPS에서 리디렉션) HTTP (빈 QUERY_STRING이있다), http://mydomain.com/?q=home, http://mydomain.com/?qq=home를 원한다. 그리고 아래의 코드는 이러한 URL에 잘 작동하며 IS_HTTP를 1로 설정합니다. 모든 것이 완벽합니다. 그러나 관리 폴더에 대한 URL도 항상 httpS가되기를 원하므로이 URL에서 해당 URL을 제외하고 싶습니다.

그 이유는 아래 코드에 두 번째 문자열을 추가했기 때문에 이러한 URL이 RewriteRule^- [E=IS_HTTP:1]에 적용되는 것을 막지는 않습니다. 왜?

#determine if page is supposed to be http 
RewriteCond %{REQUEST_URI} !^administration [NC] 
#if it has q=home or qq=home in querystring 
RewriteCond %{QUERY_STRING} (^|&)(q=home|qq=home)(&|$) [NC,OR] 
#or if query string is empty 
RewriteCond %{QUERY_STRING} ^$ 
#set env var to 1 
RewriteRule^- [E=IS_HTTP:1] 

다시 말하지만, 나는 https://mydomain.com/administration/index.php이 원하고 위의 코드를 중단하지 않는 이유 폴더/관리에서 다른 모든 파일은 RewriteRule^- [E=IS_HTTP:1] 가 중지 될 때까지?

내가 해봤 두 번째 문자열

했다 :

RewriteCond %{REQUEST_URI} !^administration [NC] 
RewriteCond %{REQUEST_URI} !^/administration [NC] 

하지만 그들 중 누구도 작동하지 않습니다. (나는 REQUEST_URI가 /에서 시작하지 않기 때문에 여기에 필요하지 않다고 믿는다. 그러나 나는 틀릴 수도있다.)

감사합니다. 대신에이 조건의

답변

0

:

RewriteCond %{REQUEST_URI} !^/+administration [NC] 

%{REQUEST_URI} 항상 슬래시로 시작하고 브라우저에서 그런 식으로 입력하면 여러 슬래시를 가질 수 있음을 기억하십시오

RewriteCond %{REQUEST_URI} !^administration [NC] 

이 조건을 가지고있다.

관련 문제