概要説明
画像に直接アクセスさせたくないという場合のカスタマイズ。外部サイトから自サイト内の画像を呼び出した際に画像が表示できなくなります。WordPressサイト内のPHPファイルに直接アクセスがあった場合プログラム実行をさせないようにする
~ 目次 ~
.htaccessを使用してリファラ判定にて禁止制御
# 画像をほかのサイトから直接表示させない(リファラが空のときは表示する・Apache 2.4)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.com/ [NC]
RewriteRule \.(jpe?g|png|gif|webp)$ - [F]
</IfModule>
以前は deny from all + 自分のサイトからのリファラだけ許可、の書き方を載せていました。この書き方だと、URL を直接開いたとき・X や Facebook が OGP の画像を取りに来るとき・Google の画像検索・メールなど、リファラを送らない見方がすべて 403 になり、自分のサイトの画像が出ないこともあります。リファラが空のときは表示し、よそのサイトのリファラだけを止める形に書き換えました(2026/10/18・作業環境の Apache 2.4 で、リファラなし 200・自分のサイト 200・よそのサイト 403 を確かめています)。example.com は自分のドメインに変えてください。
「.」の前にはエスケープ用の「\」が必要になります
この記述で自サイトから呼び出されたファイルのみアクセスを許可する(使用可能)という設定になります。
制作者の方など直接ファイルが見れたほうが良いという場合はコメントアウトしているIP制限の箇所を有効にすることで特定のIPからは今まで通り直接ファイルを閲覧することができます。
.htaccessの設置ディレクトリ ( 設置例 )
アップロードファイル・ディレクトリ ( 画像直リンク対策 )
/wp-content/uploads/.htaccess
他にも見られたくないデータをおいているディレクトリがあれば同様の.htaccessを対象ディレクトリに設置するだけで制限がかけられます。
WordPressにて使用することを前提としたPHPファイルへの直接アクセスを制限
if ( !defined('ABSPATH') ) {
exit;
}
テーマディレクトリなど直接プログラムを設置する場合に上記記述を先頭に追加しておくことでWordPress内でしか処理が実行できないようにすることが出来ます
ABSPATH定数はwp-configで定義されています


