Medifence – Access Control for Media Uploads は、アップロードしたメディアファイルへの直接アクセスを、ログイン済みの訪問者だけに制限する WordPress プラグインです。URL もファイルの配置も一切変えません。会員制サイトで「保護されたページの中の画像や PDF が、URL さえ知っていれば誰でも開けてしまう」という問題を解決します。
有効化すると uploads ディレクトリの .htaccess に保護ルールが書き込まれ、ファイルへのリクエストにログインチェックが挟まります。設定画面のライブテストが「匿名アクセスが実際にブロックされているか」を Cookie なしの HTTP リクエストで検証するため、サーバーが非対応の場合や設定ミスにもその場で気づけます。管理画面は日本語に対応しています。
主な機能
- URL とファイル配置が変わらない — 投稿・テーマ・データベース内の既存 URL はそのまま。移行作業は不要です。
- 保護範囲をフォルダ単位で指定 — 「このフォルダだけ公開」も「このフォルダだけ保護」も、拡張子単位の除外も選べます。添付を親投稿の公開状態に連動させることもできます。
- サムネイルは公開、原寸は保護 — 生成された画像サイズだけを公開できます。ギャラリーは誰でも見られて、原寸は会員だけ。
- 会員種別ごとの権限 — フォルダーごとに必要な権限を指定でき、あるプランの会員が別プランのファイルを開くことはありません。
- 期限付きの共有リンク — アカウントを持たない相手に 1 ファイルだけを渡せます。パスワード・ダウンロード回数の上限・メモ・一括発行・その場からのメール送信・台帳の CSV に対応します。
- 監査 — 誰でも開けるファイルを理由つきで一覧し、その場で保護できます。どの添付も指していないファイルや、公開ページに埋め込んでしまった保護ファイルも見つけます。投稿を公開したその場でも、訪問者が開けないファイルを知らせます。結果は CSV で持ち出せます。
- 保護が外れたら自動で復旧 — 他のプラグインがルールを消しても 1 日 1 回の点検で書き直し、上書きが繰り返されるときは競合として報告します。
- 気づける通知 — 保護が壊れたとき、誰でも開けるファイルが増えたときにメールが届きます。週次サマリーで静かな週も確認できます。
- 変更の記録と取り消し — どの管理者がいつ何を変えたかを残し、1 クリックで元に戻せます。保存前に影響を確認することもできます。
- ライブテスト・サイトヘルス・WP-CLI — 実際の HTTP レスポンスで保護を検証し、ダッシュボードとサイトヘルスに状態を出し、コマンドラインからも確認できます。メディアが別ホストから配信されていて Medifence を通らない構成も名指しします。
- 拒否されたときの見え方も選べる — ステータスコード・ログイン画面・自分のページ・プレースホルダー画像(同梱の錠前画像がそのまま使えます)から選べます。開こうとしたファイル名を伝えるので、閉じた扉が壊れたページに見えません。許可したファイルをブラウザーで開かせるか、常にダウンロードさせるかも設定できます。
使用方法
プラグインを有効化するだけで保護が始まります。管理画面「メディア」→「アクセス制限」は状態・監査・アクセスログ・設定・共有リンク・ルール・ヘルプのタブに分かれています。保護の範囲、公開する画像サイズ、フォルダーごとの権限、拒否されたときの応答(ステータスコード・ログイン画面・任意のページ)、代替画像、通知、ログの保持は必要に応じて設定します。
ドキュメント(開発者用)
最終的なアクセス可否を上書きできる medifence_allow_access フィルター、共有リンクの署名の仕組み、WP-CLI コマンド(--format=json で機械可読な出力)、会員向けの一覧を作る [medifence_files] ショートコード、メディア REST の読み取り専用フィールド、設定を凍結する MEDIFENCE_LOCK_SETTINGS 定数、診断用の X-Medifence レスポンスヘッダー、生成される .htaccess ルールの内容、配信仕様(ETag による 304 応答・動画シーク用の Range 対応・Cache-Control: private)など、開発者向けの技術情報をまとめています。
よくある質問(FAQ)
「ファイルの URL は変わる?」「保護が効いているかどう確認する?」「nginx では使える?」「アカウントのない相手に 1 ファイルだけ見せられる?」「無効化するとどうなる?」など、導入前・導入後によくいただく質問と回答をまとめています。
変更ログ(Changelog)
最新バージョンは 1.63.1 です。1.28.0 でフォルダーごとの権限、1.30.0 で画像サイズ別の保護、1.32.0 で共有リンクのパスワード、1.38.0 で会員向けショートコード、1.50.0 でダッシュボードウィジェット、1.54.0 で外部配信の検知、1.55.0 で投稿保存時の埋め込み警告、1.59.0 で監査結果の CSV、1.60.0 で内蔵プレースホルダー画像、1.62.0 でメディア一覧の絞り込み、1.63.0 で配信方法の選択を追加しました。各バージョンの変更内容は変更ログをご覧ください。
動作要件
| WordPress | 6.0 以上(7.0 までテスト済み) |
| PHP | 7.4 以上 |
| Web サーバー | Apache または LiteSpeed(mod_rewrite 有効・uploads の .htaccess が書き込み可能) |
| ライセンス | GPLv2 or later |
nginx は .htaccess を読み込まないため動作しません。対応可否は設定画面のライブテストで即座に確認できます。