Medifence の基本的な使い方です。すべての操作は管理画面「メディア」→「アクセス制限」(manage_options 権限)で完結します。画面は保護ステータス・監査・アクセスログ・設定・共有リンク・ルール・ヘルプのタブに分かれています。
1. 有効化する
プラグインを有効化すると、uploads ディレクトリの .htaccess に保護ルールが自動で書き込まれ、その時点から保護が始まります。書き込みには WordPress 標準のマーカー方式(insert_with_markers())を使うため、他のプラグインが書いたルールはそのまま保持されます。URL・ファイルの配置は変わらず、ログイン済みの訪問者には何の変化も見えません。
2. 保護ステータスを確認する
設定画面上部の「保護ステータス」に、ルールの有無・ルールの整合性・書き込み権限・mod_rewrite・ライブテストの 5 項目が表示されます。ライブテストは一時ファイルを作成し、Cookie なしの HTTP リクエストを自サイトへ送って、匿名アクセスが実際にブロックされるか(実際に返るステータスコード)を検証します。「テストを再実行」でいつでも再確認できます。
保護状態は「ツール」→「サイトヘルス」にも表示されます。保護されていない場合は「致命的な問題」として報告されるため、設定画面を開かなくても気づけます。
3. 保護の範囲を決める
既定ではアップロードディレクトリ全体が保護されます。用途に応じて 2 つのモードから選べます。
- 除外パス以外をすべて保護する(既定) — 全体を保護したうえで、公開したいフォルダだけを「除外するパス」に書きます。ロゴやチラシなど、一部だけ公開したい場合に使います。
- 指定したパスのみを保護する — 「保護するパス」に書いたフォルダだけを保護し、他は通常どおり配信します。会員向け資料など、限られた範囲だけを守りたい場合に使います。
- 添付された投稿に連動させる — 公開済みの投稿に添付されたファイルは誰でも開け、下書き・非公開・パスワード保護の投稿に添付されたファイルはログインを求めます。公開と会員限定が同じフォルダに混在するサイト向けです。
パスはアップロードディレクトリからの相対パス(例: public、2026/private)を 1 行に 1 つ書きます。指定したパス自身とその配下が対象です。除外したフォルダのファイルは PHP を経由せず直接配信されるため、表示速度に影響しません。
拡張子単位の除外もできます(例: css, js, woff2)。テーマや他のプラグインが、ログインしていない訪問者向けにアップロードディレクトリからファイルを読み込む場合に使います。pdf や zip のような文書・アーカイブ系を除外しようとすると警告が出ます — 保護がそもそも守ろうとする種類のファイルだからです(保存は止めません)。
画像は生成サイズだけを公開できます。「誰でも見られる画像サイズ」でサイズにチェックを入れると、ギャラリー用のサムネイルは誰でも見られて、原寸は会員だけ、という状態を作れます。原寸と -scaled 版が公開側に入ることはありません。
フォルダーごとに必要な権限も指定できます。会員種別が複数あるサイトでは、members/gold に専用の権限を割り当てると、その権限を持たない会員は中のファイルを開けません(より深いフォルダーの規則が優先されます)。
4. その他の設定
- 必要な権限(capability) — 空欄ならログイン済みユーザー全員に許可。権限名(例:
read)を入れると、ログインに加えてその権限を要求します。 - 拒否されたときの応答 — ステータスコード(403 / 404 / 401。404 を選ぶとファイルの存在自体を隠せます)、ログイン画面への誘導、入会案内など任意のページへの誘導から選べます。
- 自動修復(既定で有効) — 1 日 1 回ルールを点検し、失われていたり古かったりする場合は自動で書き直します。他のプラグインが
.htaccessを書き換えても、管理者が気づく前に保護が戻ります。最後に自動修復した日時は設定画面に表示されます。 - 代替画像の添付ファイル ID — 指定すると、拒否された画像リクエストには元画像の代わりにこの画像を返します(元画像が配信されることはありません)。
- メール通知 — 保護が壊れたとき・直ったときに 1 通、誰でも開けるファイルが増えたときに 1 通。週次サマリーを有効にすると、何もなかった週も現状が届きます。
- アクセスログ — ブロックした回数と共有リンクのダウンロードをファイルごとに数えます(IP アドレスもユーザーエージェントも保存しません)。保持するファイル数と期間も選べ、CSV で取り出せます。
- 設定の記録と取り消し — アクセスを決める設定の変更は、誰がいつ何をしたかが残り、1 クリックで元に戻せます。保存前に「変更の影響を確認」で、どのファイルが保護から外れるかを先に見られます。
保存すると .htaccess も同時に書き直され、ライブテストが再実行されます。
5. 特定のファイルだけ共有する
アカウントを持たない相手に 1 ファイルだけ渡したいときは、共有リンクを作成します。メディアライブラリの一覧で対象ファイルの「共有リンク」をクリックするか、設定画面の「共有リンク」で添付ファイル ID と有効期間(1 時間 / 1 日 / 7 日 / 30 日)を指定して作成してください。
作成されたリンクは、そのファイルの通常の URL に署名と有効期限を付けたものです。署名にはファイルのパスと期限の両方が含まれるため、他のファイルには使い回せず、期限を書き換えることもできません。パスワード(転送への二要素目)、ダウンロード回数の上限、誰に渡したかを残すメモを付けられ、発行直後の画面からそのままメールで送れます。メディアライブラリで複数選べば一括発行もできます。発行済みのリンクは一覧で個別に失効でき、台帳を CSV で取り出せます(リンクそのものは CSV に含まれません)。「すべての共有リンクを失効」は署名鍵を作り直すため、発行済みのすべてが即座に無効になります。
6. 公開されているファイルを洗い出す
「保護できているつもり」を潰すための画面が監査タブです。設定を当てはめて、ログアウトした訪問者が開けるファイルを理由つきで一覧します。その場で「常に保護」に切り替えられ、直後に走査し直すので、残るのは今まだ開いているものだけです。
ライブラリだけでなく uploads ディレクトリ自体も走査でき、どの添付も指していないファイル(移行の取り残しなど)を見つけます。逆に、公開ページに埋め込んでしまった保護ファイル(訪問者には壊れた画像に見えます)や、ディスクからファイルが消えた添付も報告します。前回のカウント以降に公開になったファイルは名指しされます。
7. 自分でも確認する
プライベートブラウジングのウィンドウでメディアファイルの URL を直接開き、ブロックされることを確認してください。Medifence がブロックした応答には診断用の X-Medifence ヘッダーが付くため、ブラウザーの開発者ツールでも判別できます。
WP-CLI が使える環境なら wp medifence status でも確認できます。保護されていない場合は終了コードが 0 以外になるため、デプロイ後の自動チェックにも使えます(--format=json でレポート全体を機械可読な形で取得できます)。管理画面のダッシュボードにも、ルールの状態・誰でも開けるファイル数・有効な共有リンク・定期チェックの健全性が並びます。