Medifence – Access Control for Media Uploads は、アップロードしたメディアファイルへの直接アクセスを、ログイン済みの訪問者だけに制限する WordPress プラグインです。URL もファイルの配置も一切変えません。会員制サイトで「保護されたページの中の画像や PDF が、URL さえ知っていれば誰でも開けてしまう」という問題を解決します。
有効化すると uploads ディレクトリの .htaccess に保護ルールが書き込まれ、ファイルへのリクエストにログインチェックが挟まります。設定画面のライブテストが「匿名アクセスが実際にブロックされているか」を Cookie なしの HTTP リクエストで検証するため、サーバーが非対応の場合や設定ミスにもその場で気づけます。管理画面は日本語に対応しています。
主な機能
- URL とファイル配置が変わらない — 投稿・テーマ・データベース内の既存 URL はそのまま。移行作業は不要です。
- 保護範囲をフォルダ単位で指定 — 「このフォルダだけ公開」も「このフォルダだけ保護」も選べます。拡張子単位の除外もできます。
- 期限付きの共有リンク — アカウントを持たない相手に、特定の 1 ファイルだけを期限付きで渡せます。
- 保護が外れたら自動で復旧 — 他のプラグインがルールを消しても、1 日 1 回の点検で書き直します。
- ライブテストによる実地確認 — 「保護できているつもり」を作らないための、実際の HTTP レスポンスによる検証。
- サイトヘルスと WP-CLI に対応 — 管理画面を開かなくても保護状態を確認できます。
使用方法
プラグインを有効化するだけで保護が始まります。管理画面「メディア」→「アクセス制限」で保護ステータス(ルールの有無・mod_rewrite・ライブテスト)を確認できます。保護の範囲、除外する拡張子、ログインに加えて要求する権限、拒否時のステータスコード、代替画像、自動修復は必要に応じて設定します。
ドキュメント(開発者用)
最終的なアクセス可否を上書きできる medifence_allow_access フィルター、共有リンクの署名の仕組み、WP-CLI コマンド、診断用の X-Medifence レスポンスヘッダー、生成される .htaccess ルールの内容、配信仕様(ETag による 304 応答・動画シーク用の Range 対応・Cache-Control: private)など、開発者向けの技術情報をまとめています。
よくある質問(FAQ)
「ファイルの URL は変わる?」「保護が効いているかどう確認する?」「nginx では使える?」「アカウントのない相手に 1 ファイルだけ見せられる?」「無効化するとどうなる?」など、導入前・導入後によくいただく質問と回答をまとめています。
変更ログ(Changelog)
最新バージョンは 1.17.0 です。1.13.0 でライブラリ全体を監査して公開状態のファイルを一覧できるようにし、1.14.0 でブロックの記録、1.15.0 でファイル単位の例外、1.16.0 で保護が外れたときのメール通知、1.17.0 で保護範囲の入力補助を追加しました。各バージョンの変更内容は変更ログをご覧ください。
動作要件
| WordPress | 6.0 以上(7.0 までテスト済み) |
| PHP | 7.4 以上 |
| Web サーバー | Apache または LiteSpeed(mod_rewrite 有効・uploads の .htaccess が書き込み可能) |
| ライセンス | GPLv2 or later |
nginx は .htaccess を読み込まないため動作しません。対応可否は設定画面のライブテストで即座に確認できます。