0

特定のページで GZip を無効にしたい。これは にありますが、にアクセス.htaccessすると GZip がオン ( Content-Encoding: gzip) になりdashboard/indexます。

<ifmodule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript
  BrowserMatch ^Mozilla/4 gzip-only-text/html
  BrowserMatch ^Mozilla/4\.0[678] no-gzip
  BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
  SetEnvIfNoCase Request_URI /dashboard/index no-gzip dont-vary

Header set MyHeader %{REQUEST_URI}が何であるかを確認するために追加しようとしRequest_URIましたが、内部サーバーエラーが発生しました。

dashboard/index、、、などdashboard/index.*の正規表現も試してみましたが、GZip はまだ有効でした。"/dashboard/index"SetEnvIfNoCase REQUEST_URI ...

コメント#AddOutputFilterByTypeすると、GZip がオフになります。

私は Apache 2.4.16、Yii 2.0.7、PHP を使用しています。私は本番環境で FPM を使用しているため、apache_setenv()利用できません。

4

1 に答える 1

3

index.phpURLを取り除くために書き換えを使用している可能性があります。SetEnvIfリクエスト中に実行される段階により、 は使用される varindex.phpの一部になりますRequest_URI(これは とは異なり%{REQUEST_URI}ます)。

今日では、書き換えに使用せず、コードが元の情報を読み取るPATH_INFOだけの に単純に書き換えることが非常に一般的です。その場合、inは単に「index.php」になるため、その URL の特別なダミーの書き換えでフラグ env var を設定し、後で接頭辞を付けて参照する必要があります (内部リダイレクト ステージがあるため)。 mod_rewrite が既存のすべての環境変数の前に) を付ける場所を書き換えます。index.phpREQUEST_URIRequest_URISetEnvIfREDIRECT_REDIRECT_

RewriteRule ^dashboard/index - [E=no-gzip:1]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
SetEnvIf REDIRECT_no-gzip 1 no-gzip

次のように書き直すと、少し冗長な方法がありますPATH_INFO(たとえば、ルールを使用/foobarして " " を " " に変更します)。/index.php/foobarRewriteRule (.*) index.php/$1

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php/$1 [L]
SetEnvIfNoCase REQUEST_URI ^/index.php/dashboard/index.*$ no-gzip dont-vary

RewriteRuleしかし、仕組みを変えると壊れてしまうので、それはもっと脆いようです.

于 2016-03-25T00:25:32.380 に答える