サポート » プラグイン » 画像の直接リンクを禁止すると、携帯から画像が見られなくなる

  • 初めて質問させていただきます。
    まだWordPressを使い始めて半年ほど、知識・技量共に至らないため
    皆様にとっては簡単な質問かもしれませんが、ご容赦ください。

    画像の直接リンクを禁止するため、
    wordpressをインストールしているディレクトリ直下の.thaccessに

    <Files ~ “\.(png|jpg|gif)$”>
    SetEnvIf Referer “http://exsample.com/&#8221; OK
    order deny,allow
    deny from all
    allow from env=OK
    </Files>

    と記述し、アップロードしました。
    PC、スマホからは、画像のURLを直接叩いても画像が見られなくなり、
    安心していたところ、
    携帯の方からサイトを見てみると
    全ての画像が表示されなくなってしまいました。

    素人ながら、
    SetEnvIf Referer “http://exsample.com/&#8221; OK
    の部分にktai styleが参照しているURLを記載すればいけるのだろうか?
    と思いましたが、どうもうまくいきません。

    私がやりたい事は、
    画像を他のサイト上で画像URLを引っ張った時に表示されないのではなく、
    画像のURLを直接叩いた時に表示されない方法です。

    皆様のお知恵を貸してください。
    どうぞよろしくお願いいたします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • WordPressを使われているので、mod_rewriteが利用できると想定してのことですが、SetEnvIfではなく、下記のようにmod_rewriteで.htaccessを書くと如何でしょうか?

    RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?example.com [NC]
    RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]

    3行目でアドレスを定義していますが、リファラにこのアドレスが含まれていれば画像が表示されます。
    httpsで呼ばれた時なども考慮しており複雑になっていますが、複数のアドレスで許可する場合は、同じ要領で複数書いて下さい。

    画像を他のサイト上で画像URLを引っ張った時に表示されないのではなく、
    画像のURLを直接叩いた時に表示されない方法です。

    つまり、画像を引っ張るサイトのアドレスは書いて下さい。

    redcocker様

    ご返信ありがとうございます。
    説明不足だったようで、失礼いたしました。

    画像のファイル名は、だいたいの方がある一定の法則に基づいて
    決めておられるかと思うのですが、私もそうでして、
    例えば

    http://www.exsample.com/wp/wp-content/uploads/2012/02/100a.jpg

    という画像があったとします。
    この画像のURLを知ると、
    http://www.exsample.com/wp/wp-content/uploads/2012/02/100b.jpg
    も存在するのではないか?と
    推測された時、
    ブラウザのアドレスバーに
    http://www.exsample.com/wp/wp-content/uploads/2012/02/100b.jpg
    と直接アドレスを叩かれてしまうと、
    本来見せたくないものであるにも関わらず
    見えてしまうことを防ぎたいのです。

    これを防ごうとして、

    <Files ~ “\.(png|jpg|gif)$”>
    SetEnvIf Referer “http://exsample.com/&#8221; OK
    order deny,allow
    deny from all
    allow from env=OK
    </Files>

    の.htaccessをWPがインストールされているディレクトリ直下に
    置いたところ、PCとスマホでは狙い通り
    画像のURLを一部改変しても表示されなくなりましたが、
    携帯(ktai style)ではどの画像も表示されなくなってしまいました。

    それがとても不思議だったのですが、
    ktai styleはどこか違うディレクトリを参照しているので
    http://exsample.com/ ではないアドレスを記載すれば解決するのでしょうか?

    その場合は、リファラが空の場合を抜けば良いだけかと思います。

    RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?example.com [NC]
    RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]

    SetEnvIfの記述が分からないので正確なことは言えませんが、ktai styleで画像が表示されない件は、記述が間違っていると言うより、何らかの理由でリファラが空になっていることが原因である可能性があります。チェックしているのはリファラなのでディレクトリは関係ありません。

    RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?example.com [NC]
    RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]

    で、OKならば、リファラが空になっていることが原因でしょう。

    この様なことは起こりえますし、それがリファラを使ったコントロールの限界かと。

    redcocker様

    RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?example.com [NC]
    RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]

    と書くと、
    やはりPC、スマホでは画像のアドレスを直接入力しても
    403エラーになってくれますが(狙い通り)、
    携帯では画像を読み込まなくなってしまいます。

    空のリファラを許可するコードを追加すると

    RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?example.com [NC]
    RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]

    携帯から画像が見られるようになりますが、
    PC、スマホで画像のアドレスを直接入力すると
    見られる状態に戻ってしまいます。

    勉強不足で、理解ができず
    何度もお手間をおかけしまして恐縮です。

    リファラ以外の方法を探してみようかと思います。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「画像の直接リンクを禁止すると、携帯から画像が見られなくなる」には新たに返信することはできません。