當提供查詢字符串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="(^|\?|&)s2member_file_download\=.+" ignoreCase="false" />
<add input="{QUERY_STRING}" pattern="(^|\?|&)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,你不應該壓縮它們。
我實際上並不擁有服務器,所以我將不得不編寫支持,看看他們是否願意做一些更改,但現在至少我知道該怎麼問他們。非常感謝您的幫助! :) –
順便說一句,你也可以讓他們只允許你的網站,他們可以通過在範圍內的xml來做到這一點,這樣沒有其他人受到影響或如果他們有顧慮,則授予權限覆蓋該變量。現實是,這根本不應該是一個安全問題。 –