当提供查询字符串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来做到这一点,这样没有其他人受到影响或如果他们有顾虑,则授予权限覆盖该变量。现实是,这根本不应该是一个安全问题。 –