2017-02-23 104 views
1

我在我的htaccess文件中有幾條規則。 有了一個塊我改水煤漿以HTTPS在任何情況下,下一個程序段,我會定義一個例外htaccess RewriteCond和RewriteRule不是HTTPS

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteCond %{SERVER_PORT} !^443$ 
    RewriteRule (.*) https://%{HTTP_HOST}/$1 [L] 

    # but not SOAP or APP-calls # 
    RewriteCond %{SERVER_PORT} ^443$ 
    RewriteCond %{QUERY_STRING} ^type=8800882$ 
    RewriteCond %{QUERY_STRING} (.*(?:^|&))action=.* 
    RewriteRule (.*) http://%{HTTP_HOST}/$1 [L] 
</IfModule> 

第一塊做它的工作。 但是,通過設置參數「type = 8800882」或向請求添加參數操作來強制HTTP是不可能的。

這是我的第二次嘗試,第一次我這樣做(工作,但現在分成):

<IfModule mod_rewrite.c> 
     RewriteEngine On 
     RewriteBase/
     # all should be HTTPS # 
     RewriteCond %{SERVER_PORT} !^443$ 
     RewriteCond %{QUERY_STRING} !^type=8800882$ 
     RewriteCond %{QUERY_STRING} !(.*(?:^|&))action=.* 
     RewriteRule (.*) https://%{HTTP_HOST}/$1 [L] 
    </IfModule> 

我怎樣才能使一個例外不HTTPS如果參數類型= 8800882或參數動作= *?

回答

0

您可以使用以下規則:

RewriteEngine on 


#exclude /?action=.* and ?type=8800882 
RewriteCond %{THE_REQUEST} !\?(?:type=8800882|action=.*) [NC] 
#http to https 
RewriteCond %{SERVER_PORT} !443 
RewriteRule (.*) https://%{HTTP_HOST}/$1 [NE,L,R]