WordPressの画像等の直リンクを禁止する

WordPressで、会員サイトを作る場合、まず必ずログインさせ必ず認証させる必要があります。このあたりは、WordPressに認証をつけるで方法を紹介しています。

しかし、この方法だとWordpressのアップデートをする度に、コードが上書きされてしまいログインしないでコンテンツが見られてしまうという「うっかりミス」が起こることがあります。一番よいのは、themeのテンプレートのヘッダーで、下記のコードを記述するのが良いのですが・・・・

if (is_user_logged_in()){
}
else {
auth_redirect();
};

この難点は、アップロードした画像やPDFファイルが直リンクで見られてしまうことです。ヘッダーでログインリダイレクトを記述するということは、theme以降でログイン制御が走ることになるので、themeフォルダに関連しないものはログインしないで見られてしまうようです。

そこで、themeからリンクされて見ること以外に直リンクで閲覧を禁止する必要が出てきます。具体的には、uploadsフォルダに「.htaccess」を置き、直リンクでの閲覧を禁止するようにします。

サーバによって記載の仕方は2通りあるようです。レンタルサーバにより異なります。

SetEnvIf Referer "^http://mori\.moripower\.jp" ShowOK
order deny,allow
deny from all
allow from env=ShowOK
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://mori\.moripower\.jp[NC]
RewriteRule \.(jpg|png|gif|txt|pdf)$ - [F]

テスト
ちなみに、下記の画像はクリックで見れますが、URLをブラウザに直接貼り付けては見ることができません。

URL: https://mori.moripower.jp/wp-content/uploads/2011/06/mp20110622.jpg
ブラウザキャッシュをクリアしてから実験してね。

5件のコメント

  1. 初めまして!何度か来てお世話になってます(*- -)(*_ _)ペコリ
    ひすこばりと申します。

    なんど.htaccessを上記の方にセットしてやってみても、WordPressにアップされてる画像全体が表示されなくなってしまいます
    なぜなのかも、調べてみてもよく解らなかったので残念です…;;

    役立つ
    面白い
  2. ナイス!

    役立つ
    面白い
  3. はじめまして。
    PDFの直リンク防止方法を探しておりました。

    とても助かりました。
    ありがとうございます。

    役立つ
    面白い
  4. Masa.Iさんと同じことが起きました。

    https://fukuro-press.com/direct-link-ban-with-htaccess/

    を参考にするとよいですよ。

    このサイト様の例文は正しいのですが、

    ドメイン名のドット(.)の前にバックスラッシュ(\)を忘れると、全ての画像が表示されません。

    また、「uploadsフォルダ」に保存する点もご注意ください。

    そのことに気が付くのに、3~4時間かかりました(-_-;)

    役立つ
    面白い
  5. ありがとう!

    役立つ
    面白い

コメントを残す

役立つ
面白い

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください