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