2012-02-12 10 views
-1

私の値IS_HTTPによっては、URLがhttpsかhttpかどうかを以下のコードの後に​​決めます。htaccess rewriterulesから1つのフォルダを除いて

http://mydomain.com(空のQUERY_STRINGがあります)、http://mydomain.com/?q=homehttp://mydomain.com/?qq=homeの場合は常にhttp(httpsからリダイレクト)します。 以下のコードは、このようなURLでうまく動作し、IS_HTTPを1に設定します。すべてが完璧です。しかし、管理フォルダへのURLも常にhttpSにしたいので、そのURLからそのURLを除外したいと思います。

これは、次のコードに2番目の文字列を追加した理由ですが、このような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] 前に停止しますか?

私がいた試してみた2番目の文字列:

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] 

は、この条件を持っています。

関連する問題