WordPress のログイン画面と管理画面を IP で絞る(.htaccess・国内の IP だけにする場合も)

広告WordPress・PHP を学べる本

Amazonのアソシエイトとして、WordPress functions.phpは適格販売により収入を得ています。

概要説明

海外からアクセスをIPで制限したい場合に.htaccessに日本のIP帯域を設定して制限を行うことが出来ます。

.htaccess でログイン画面と管理画面を IP で絞る

.htaccess(WordPress を入れたフォルダ)
# wp-login.php(ログインの画面)を、許可した IP からだけにする(Apache 2.4)
<Files wp-login.php>
    Require ip xxx.xxx.xxx.xxx
</Files>
wp-admin/.htaccess(新しく作る)
# 管理画面を、許可した IP からだけにする
# admin-ajax.php は表のページの機能(お問い合わせなど)も使うので外す
<FilesMatch "^(?!admin-ajax\.php$)">
    Require ip xxx.xxx.xxx.xxx
</FilesMatch>

以前は、サイト全体を deny from all にして、許可した IP だけを通す例を載せていました。この書き方だと Googlebot も止まって検索に出なくなり、SSL の証明書の更新の確かめや、外のサービスからの通知も届かなくなります。WordPress で守りたいのはログインの画面と管理画面なので、そこだけを絞る形に書き換えました(2026/10/18)。作業環境の Apache 2.4 で、許可していない IP からはログインの画面と管理画面が 403 になり、トップと admin-ajax.php は表示されることを確かめています。

xxx.xxx.xxx.xxx には、自分の固定 IP を入れます。複数あるときは、空白で区切って並べます(例:Require ip 203.0.113.10 198.51.100.0/24)。入れる前に今の .htaccess を控えておき、入れたあとに自分が管理画面に入れることを確かめてください。SiteGuard などでログインの URL を変えている場合は、変えたあとの URL でも入れるかを確かめます。

不正アクセスしてきている人のIPがわかれば個別でブロックしたり、固定IP環境の管理者だけを許可したいという場合にIPを追加して制限対応を行います

国内の IP だけに絞りたい場合

ログインの画面と管理画面を「日本の IP だけ」にしたい場合は、上の Require ip に国内の IP の範囲を並べます。国内の範囲は数千行あり、割り当ても変わるので、この記事には一覧を載せていません。下のサイトなどで最新の一覧を取り、allow from の行を Require ip の形に直して使ってください。

.htaccess(例)
<Files wp-login.php>
    Require ip 1.0.16.0/20 1.0.64.0/18
    # …最新の国内の範囲を並べる
</Files>

ただし、国内の IP から攻撃してくる相手もいますし、一覧が古いと新しい国内の回線から入れなくなります。固定 IP があるなら、自分の IP だけに絞るほうが確実です。

国内の IP の範囲は変わるので、使う場合は定期的に最新の一覧に入れ替えてください

関連機能

  1. admin_init はログインしていなくても動く:ダッシュボードのウィジェットの保存に、権限と nonce の確かめを足す

  2. SiteGuard と CloudSecure を比べる:SiteGuard に統一し、ログインの URL の落とし穴も直した

  3. /?author=id でアクセスした時の投稿者アーカイブリダイレクトを無効にする

サイドバー

よく使うカスタマイズ

最近の記事

Profile

PAGE TOP