質問: 自サイトのリンクからpdfの表示を許可し、URL直接入力などによる外部からのアクセスは拒否したいです。 以下のような.htaccessをwordpressのuploadsディレクトリに入れました。 ``` SetEnvIf Referer "^https://example\.com" ref_ok order deny,allow deny from all allow from env=ref_ok ``` これをいれたところ、 ChromeやFirefoxは問題なく、IE11でも直接アクセスすると拒否されるのですが、 IEで自サイトからリンクしたpdfを開くとロードの途中で止まり表示されません。 常にではないですがIE自体フリーズしたりもします。 pdfのファイルサイズの問題かと思いましたが1MBないものも止まります。 途中で止まったファイルを何度も開くと、徐々にロードがたまり最終的には表示されます。 .htaccessを削除するとスムーズに表示されます。 .htaccessの記述や設置場所は問題ないでしょうか? 解決方法をご存知の方いらっしゃいましたら、ご回答宜しくお願い致します。 --- ///追記です yuba様の仰ったとおり開発者ツールで確認いたしました。 rangeリクエストとなっていました。(スクショ載せておきます) ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/c1b44b1fa369ef0774a54515793806a4.jpeg) コードを下記に変更すると表示はされましたが、直接URLを入力した際も表示されてしまいます。 これを防ぐ方法はあるのでしょうか? お手数おかけしますがよろしくお願い致します。 ``` SetEnvIf Referer "^https://example\.com" ref_ok SetEnvIf Referer "^$" ref_ok order deny,allow deny from all allow from env=ref_ok ```
回答: いかにもIE11が分割ダウンロードをしており、分割ダウンロードのときにはリファラが引き継がれないかのような動作に見えます。 (IE11に分割ダウンロード機能があるという話を聞いたことはありませんが) まずこういう場合の調査の仕方です。2方面から調査します。 一つはブラウザ。F12で開発者ツールが立ち上がるのはご存じでしょうか。ここで「ネットワーク」タブを開いておいて、その状態でPDFダウンロードを実行します。するとどんなリクエストをサーバーに投げているかがリストに次々出てきますので、問題のあるリクエストがないか確認してください。もちろん、リクエストヘッダのRefererがどうなっているか、Rangeヘッダが含まれていないか、そもそもPDFファイルのリクエストが何本発行されているかなどがキモです。 調査のもう一方面は、サーバのログ。サーバのログにはリクエストヘッダが記録されたりはしていませんが、何回リクエストが来てそのうちどれにエラーを返したかなどが記録されているのでブラウザの開発者ツールでわからないことが解るかもしれません(今回のケースでは開発者ツールだけで完結するはずですが)。 で、調査結果次第ですが、Refererが空の場合も許可する設定にすることでおそらく解決するかと思います。