人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

.htaccessで直リン禁止でもFacebook,Twitter,feedlyは許可する場合

// Yahoo!知恵袋で意味不明な回答しか来ないのでこちらに投稿しました。 Add Star

WordPressで画像フォルダに直リンクを拒否する.htaccessを設置するのは出来ましたが、そのままですと、Facebook、Twitterのシェア、feedlyへの画像反映が不可になってしまいます。

.htaccessを画像フォルダに設置し、

自分のドメインからは許可
Facebook、Twitterのシェア、feedlyへの画像反映
他サイト(ブログ等)からは拒否

としたい場合の.htaccessの記述方法はどのようにしたらよいでしょうか?

ちなみに、検索で直リン禁止でもFacebook等はOkにするといった記事のコードを記述してみましたが、シェアやフィードへの画像は反映されませんでした。
RewriteCond %{HTTP_USER_AGENT} !(twitter|facebookexternalhit) [NC]
です。mod_rewriteを使わない汎用的な記述も試しましたがやはりダメでした。

借りてるサーバーはエックスサーバーです。

●質問者: appleyard
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● gizmo5
●50ポイント

ご覧になった記事というのが分かりませんが、HTTP_USER_AGENT ではなく HTTP_REFERER ではないでしょうか。


2 ● kaoato
●450ポイント ベストアンサー

<Files ~ "\.(gif|png|jpg|jpeg)$">
SetEnvIf Referer "^https://blog\.example\.com" ref_ok
SetEnvIf Referer "^https://twitter\.com" ref_ok
SetEnvIf Referer "^https://www\.facebook\.com" ref_ok
SetEnvIf Referer "^https://feedly\.com/" ref_ok
order deny,allow
deny from all
allow from env=ref_ok
</Files>


gif、png、jpg、jpegファイルを

https://blog.example.com
https://twitter\.com
https://www.facebook.com
https://feedly.com

以外から参照されたら、アクセス拒否


Referer =>参照元のURL
HTTP_USER_AGENT =>ユーザーエージェント

よく見かけるのは上記。

# SNS からの画像参照を許可
RewriteCond %{HTTP_USER_AGENT} !(twitter|facebookexternalhit|google) [NC]


たぶんこれのことだと思うけど、
twitterとかのBotエージェントが、画像を参照にしてきたときに許可するという記述だと思う。

Twitterカードとかの画像は、たしか一旦Twitterでキャッシュされるのでそれようの記述だと思います。

この設定で、Twitterカードとかの画像は表示される可能性は高いと思う。
Twitterカードの画像のURLをみないと分からないけど。

キャッシュでなくて、直接画像を表示してたら、これだけでなくて、Referer の許可も必要

# URL 書き換え処理を ON にする
RewriteEngine on
# 画像へのリンクを許可するサイトを記載
# 複数ある場合は行を分けて書く
RewriteCond %{HTTP_REFERER} !^http(s)?://nj-clucker.com [NC]
RewriteCond %{HTTP_REFERER} !google\. [NC]
RewriteCond %{HTTP_REFERER} !yahoo\. [NC]
RewriteCond %{HTTP_REFERER} !bing\. [NC]
RewriteCond %{HTTP_REFERER} !search\?q=cache [NC]
# SNS からの画像参照を許可
RewriteCond %{HTTP_USER_AGENT} !(twitter|facebookexternalhit|google) [NC]
# bot のアクセスを許可
RewriteCond %{HTTP_USER_AGENT} !(|googlebot|yahoo|bingbot) [NC]
# 直リンク禁止ファイルアクセス時にエラーを返す
RewriteRule \.(jpg|png|gif)$ - [F]

https://nj-clucker.com/disable-direct-access-to-image-by-htaccess/

上記を少し書きかえて、そのまま使えば良いのでは?
上記でワンセットなので、1行だけ取り出してとかは、期待通りに動作しなくて当然だと思う。

これ以外に、直リン禁止の記述があったら、また動作が変わってくると思うけど・・。


appleyardさんのコメント
有難うございます。 私も調べてみましたら、FB、Twitter、feedlyのいずれもメディアディレクトリから読み込んでいるようです。 ですので、ファイルマッチでメディアディレクトリ内のファイルに対して許可・不許可に.htaccessを作成して試してみようと思います。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ