2013-03-28 57 views
0

我在運行IIS7的服務器上的基於WordPress的網站上設置了S2Members,並且需要更改一些設置才能允許將限制文件下載到成員。在iis7上重寫字符串查詢規則

爲此,我需要將此規則從apache .htaccess轉換爲iis7 web.config。

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteCond %{QUERY_STRING} (^|\?|&)s2member_file_download\=.+ [OR] 
RewriteCond %{QUERY_STRING} (^|\?|&)no-gzip\=1 
RewriteRule .* - [E=no-gzip:1] 
</IfModule> 

我做了一些試驗,但它最終崩潰的網站,所以我想它最好要問這裏的人究竟是誰知道他們在做什麼!

回答

0

當提供查詢字符串no-gzip == 1或其他member_file_download ...條件時,它看起來像上面的規則試圖禁用GZIP壓縮。

爲了在IIS中使用URL重寫來實現,你需要做的是在web.config中使用相同的邏輯,但使用它覆蓋/刪除Accept-Encoding標頭,以便服務器不會看到「accept encoding gzip /放氣「,告訴它壓縮。

所以有兩個步驟要做到這一點是:
首先,在\ Windows添加服務器變量設置\ SYSTEM32 \ INETSRV \設置\對ApplicationHost.config使服務器允許覆蓋服務器設置(你也可以使用Server Variables鏈接在UI中執行此操作)。

<system.webServer> 
     <rewrite> 
      <allowedServerVariables> 
       <add name="HTTP_ACCEPT_ENCODING" /> 
      </allowedServerVariables> 
     </rewrite> 
    </system.webServer> 

然後,你要添加在你的web.config實際的重寫規則,這東西看起來像如下:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <rewrite> 
      <rules> 
       <rule name="DisableGZIP"> 
        <match url=".*" ignoreCase="false" /> 
        <conditions logicalGrouping="MatchAny"> 
         <add input="{QUERY_STRING}" pattern="(^|\?|&amp;)s2member_file_download\=.+" ignoreCase="false" /> 
         <add input="{QUERY_STRING}" pattern="(^|\?|&amp;)no-gzip\=1" ignoreCase="false" /> 
        </conditions> 
        <action type="None" /> 
        <serverVariables> 
         <set name="HTTP_ACCEPT_ENCODING" value="" /> 
        </serverVariables> 
       </rule> 
      </rules> 
     </rewrite> 
    </system.webServer> 
</configuration> 

這應該工作,以測試它,你可以通過查詢字符串沒有-gzip = 1到任何URL,你不應該壓縮它們。

+0

我實際上並不擁有服務器,所以我將不得不編寫支持,看看他們是否願意做一些更改,但現在至少我知道該怎麼問他們。非常感謝您的幫助! :) –

+0

順便說一句,你也可以讓他們只允許你的網站,他們可以通過在範圍內的xml來做到這一點,這樣沒有其他人受到影響或如果他們有顧慮,則授予權限覆蓋該變量。現實是,這根本不應該是一個安全問題。 –