0

IIS7 を実行するサーバー上の WordPress ベースの Web サイトで S2Members をセットアップしていますが、制限されたファイルをメンバーにダウンロードできるようにするためにいくつかの設定を変更する必要があります。

そのためには、このルールを 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>

私はいくつかの実験をしましたが、サイトがクラッシュしてしまうので、実際に何をしているのかを知っている人に聞いた方が良いと思いました!

4

1 に答える 1

1

query-string no-gzip == 1 またはその他の member_file_download... 基準が指定されている場合、上記のルールは GZIP 圧縮を無効にしようとしているようです。

IIS で URL Rewrite を使用してそれを実現するには、web.config で同じロジックを使用しますが、それを使用して Accept-Encoding ヘッダーをオーバーライド/削除し、サーバーが "accept encoding gzip/deflate" を認識しないようにします。圧縮するように指示します。

そのため、次の 2 つの手順を実行します。
まず、\windows\system32\inetsrv\config\ApplicationHost.config にサーバー変数設定を追加して、サーバーがサーバー設定をオーバーライドできるようにします (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>

これは機能するはずです。テストするには、クエリ文字列 ?no-gzip=1 を任意の URL に渡すことができ、それらを圧縮しないでください。

于 2013-03-29T01:23:21.960 に答える