WordPressで、会員サイトを作る場合、まず必ずログインさせ必ず認証させる必要があります。このあたりは、WordPressに認証をつけるで方法を紹介しています。
しかし、この方法だとWordpressのアップデートをする度に、コードが上書きされてしまいログインしないでコンテンツが見られてしまうという「うっかりミス」が起こることがあります。一番よいのは、themeのテンプレートのヘッダーで、下記のコードを記述するのが良いのですが・・・・
if (is_user_logged_in()){
}
else {
auth_redirect();
};
}
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
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]
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
ブラウザキャッシュをクリアしてから実験してね。
初めまして!何度か来てお世話になってます(*- -)(*_ _)ペコリ
ひすこばりと申します。
なんど.htaccessを上記の方にセットしてやってみても、WordPressにアップされてる画像全体が表示されなくなってしまいます
なぜなのかも、調べてみてもよく解らなかったので残念です…;;
ナイス!
はじめまして。
PDFの直リンク防止方法を探しておりました。
とても助かりました。
ありがとうございます。
Masa.Iさんと同じことが起きました。
https://fukuro-press.com/direct-link-ban-with-htaccess/
を参考にするとよいですよ。
このサイト様の例文は正しいのですが、
ドメイン名のドット(.)の前にバックスラッシュ(\)を忘れると、全ての画像が表示されません。
また、「uploadsフォルダ」に保存する点もご注意ください。
そのことに気が付くのに、3~4時間かかりました(-_-;)
ありがとう!