質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Internet Explorer

Internet Explorer(IE;MSIE)はマイクロソフトが開発したウェブブラウザです。Microsoft Windowsに組み込まれています。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

Q&A

解決済

1回答

4548閲覧

.htaccessで直リンクの拒否をしたいがIEで挙動がおかしい

退会済みユーザー

退会済みユーザー

総合スコア0

Internet Explorer

Internet Explorer(IE;MSIE)はマイクロソフトが開発したウェブブラウザです。Microsoft Windowsに組み込まれています。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

0グッド

0クリップ

投稿2016/02/09 02:39

編集2016/02/09 05:36

自サイトのリンクからpdfの表示を許可し、URL直接入力などによる外部からのアクセスは拒否したいです。
以下のような.htaccessをwordpressのuploadsディレクトリに入れました。

SetEnvIf Referer "^https://example\.com" ref_ok <Files ~ "\.(pdf)$"> order deny,allow deny from all allow from env=ref_ok </Files>

これをいれたところ、
ChromeやFirefoxは問題なく、IE11でも直接アクセスすると拒否されるのですが、
IEで自サイトからリンクしたpdfを開くとロードの途中で止まり表示されません。
常にではないですがIE自体フリーズしたりもします。
pdfのファイルサイズの問題かと思いましたが1MBないものも止まります。

途中で止まったファイルを何度も開くと、徐々にロードがたまり最終的には表示されます。
.htaccessを削除するとスムーズに表示されます。

.htaccessの記述や設置場所は問題ないでしょうか?
解決方法をご存知の方いらっしゃいましたら、ご回答宜しくお願い致します。


///追記です
yuba様の仰ったとおり開発者ツールで確認いたしました。
rangeリクエストとなっていました。(スクショ載せておきます)

イメージ説明

コードを下記に変更すると表示はされましたが、直接URLを入力した際も表示されてしまいます。
これを防ぐ方法はあるのでしょうか?
お手数おかけしますがよろしくお願い致します。

SetEnvIf Referer "^https://example\.com" ref_ok SetEnvIf Referer "^$" ref_ok <Files ~ "\.(pdf)$"> order deny,allow deny from all allow from env=ref_ok </Files>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

いかにもIE11が分割ダウンロードをしており、分割ダウンロードのときにはリファラが引き継がれないかのような動作に見えます。
(IE11に分割ダウンロード機能があるという話を聞いたことはありませんが)

まずこういう場合の調査の仕方です。2方面から調査します。
一つはブラウザ。F12で開発者ツールが立ち上がるのはご存じでしょうか。ここで「ネットワーク」タブを開いておいて、その状態でPDFダウンロードを実行します。するとどんなリクエストをサーバーに投げているかがリストに次々出てきますので、問題のあるリクエストがないか確認してください。もちろん、リクエストヘッダのRefererがどうなっているか、Rangeヘッダが含まれていないか、そもそもPDFファイルのリクエストが何本発行されているかなどがキモです。
調査のもう一方面は、サーバのログ。サーバのログにはリクエストヘッダが記録されたりはしていませんが、何回リクエストが来てそのうちどれにエラーを返したかなどが記録されているのでブラウザの開発者ツールでわからないことが解るかもしれません(今回のケースでは開発者ツールだけで完結するはずですが)。

で、調査結果次第ですが、Refererが空の場合も許可する設定にすることでおそらく解決するかと思います。

投稿2016/02/09 03:20

yuba

総合スコア5568

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/02/09 05:54

お世話になります。回答ありがとうございます。 追記させていただきました。よろしければ再度ご回答いただけたらと思います…!
yuba

2016/02/09 06:30

> 直接URLを入力した際も表示されてしまいます。これを防ぐ方法はあるのでしょうか? 諦めてくださいというのが端的な答えになります。そもそも直リンク禁止というのがWebの枠組みからはみ出ているのです。どうしてもやろうとすると、PDFは静的コンテンツとしてでなくPHPレスポンスとして返すようにし、配布ページでDLトークンを発行しセッション情報に格納するような処理をしないといけません。
退会済みユーザー

退会済みユーザー

2016/02/10 12:05

なるほどです。 丁寧に回答していただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問