(WordPress) アップロードしたメディア、ファイルにアクセス制限

WordPress にアップロードしたファイルは基本公開なのでURLが分かればアクセスできますが、サイト全体は公開なものの一部非公開記事がある等の事情で公開したくない場合の対応策を調べてみました。

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^https://WWW.EXAMPLE.JP/.*$
RewriteRule \.*$ - [F]

上述の .htaccess ファイルを wp-content/uploads/ 直下に配置することである程度の対策になりそうです。

ただし、以下のようないくつか弱点もあります。

  • 同じドメインからのアクセスは許可されるので、完全な非公開ではない
  • メディアを新しいタブで開く、と設定すると別ドメインからのアクセスと同じように拒否される
  • Edge ではPDFなどがダウンロードできない

参考

WordPress REST API

WordPress REST API ではファイルの URL が取得可能なため、そこで URL が分かってしまうことも……。

「Disable WP REST API」等のプラグインで無効化することも視野でしょうか。

この記事を書いた人

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。