お問い合わせ
image

サブドメインで WordPress の管理画面を分離する方法

制作・開発
profile

Iftekhar Eather

本記事は、英語で公開されている下記記事の日本語翻訳版です。
Separate WordPress Admin Panel with a Subdomain

サイトのアクセスやコンテンツ量が増えてくると、メインサイトとは別に管理画面を運用したくなる場面があります。WordPress の管理画面(Admin Panel)をサブドメイン(例:admin.xyz.com)に分け、
公開用サイト(例:www.xyz.com)とは別のサーバーで動かすことで、セキュリティとパフォーマンスの向上を図ることができます。この記事では、その設定手順を順を追って解説します。

なぜ管理画面を分けるのか?

具体的な手順に入る前に、まず「なぜ分けるのか」を簡単に整理しておきます。管理画面をサブドメインに分離することで、次のようなメリットがあります。

● セキュリティの向上:管理画面へのアクセスをサブドメイン経由に限定することで、ブルートフォース攻撃などのリスクを減らすことができます。
● パフォーマンスの改善:管理画面を別サーバーで運用することで、公開サイトに影響を与えず、バックエンド用にリソースを集中させることができます。
●将来的な拡張のしやすさ:公開サイトと管理画面を分けることで、サイト規模の拡大に合わせて柔軟に構成を調節できます。

Step 1:サブドメインを用意する

まずは、管理画面用のサブドメインを作成します。

DNS 設定:DNS プロバイダの管理画面にログインし、admin.xyz.com 用の A レコードを作成します。このレコードは、管理画面を設置するサーバーの IP アドレスを指定します。
サーバーの準備:新しいサーバーで WordPress が動作する環境を用意します。Apache や Nginx などの Web サーバー、PHP、MySQL / MariaDB がインストールされている必要があります。

Step 2:WordPress をコピーする

次に、既存の WordPress 環境をサブドメイン側にコピーします。

ファイルのコピー:公開サイト(www.xyz.com)から、WordPress のコアファイル・テーマ・プラグインを含むすべてのファイルを、サブドメイン(admin.xyz.com)側へ転送します。FTP / SFTP など、環境に合った方法で問題ありません。
データベース設定:公開サイトと管理画面は、同じデータベースを使用します。wp-config.php をサブドメイン側にコピーし、同じデータベースに接続されていることを確認してください。

Step 3:サブドメイン用の wp-config.php を編集する

管理画面として正しく動作させるため、サブドメイン側のwp-config.php を調整します。

サイトURLの設定

define('WP_HOME', 'https://www.xyz.com');
define('WP_SITEURL', 'https://admin.xyz.com');

これにより、WordPress は管理画面を admin.xyz.com から表示し、公開サイトはそのままwww.xyz.comで提供するように設定されます。

クッキーの分離(任意)
公開サイトと管理画面でCookie の扱いを分けログイン情報をより安全に管理したい場合は、次のような設定を追加します。
define('COOKIE_DOMAIN', 'xyz.com');
define('ADMIN_COOKIE_PATH', '/');
define('COOKIEPATH', '/');
define('SITECOOKIEPATH', '/');

Step 4:公開サイトからのアクセスを制御する

次に、公開サイト側から管理画面にアクセスされた場合、自動的にサブドメインへ移動するよう設定します。

管理画面へのアクセスをリダイレクトする:
メインサイト側のサーバーで、Apache を使用している場合は .htaccess ファイルを、Nginx を使用している場合はサーバー設定を編集し、/wp-admin および /wp-login.php へのアクセスをすべて admin.xyz.com へリダイレクトするように設定します。
以下は .htaccess の設定例です。

RewriteEngine On RewriteCond %{REQUEST_URI} ^/wp-admin
RewriteRule ^(.*)$ https://admin.xyz.com/wp-admin/$1 [R=301,L]
RewriteCond %{REQUEST_URI} ^/wp-login.php
RewriteRule ^(.*)$ https://admin.xyz.com/wp-login.php [R=301,L]

Step 5:セキュリティ面の考慮

基本構成が整ったら、セキュリティ面もあらためて確認しておきましょう。

・SSL/TLS の設定admin.xyz.com でも SSL 証明書を適用し、HTTPS 接続を必須にします。
ログイン情報や管理操作を保護するために重要です。
IP 制限(任意):さらに安全性を高めたい場合は、特定の IP アドレスのみアクセスできるように、Web サーバー側で制限することも可能です。

Step 6:動作テスト

最後に、構成が想定どおり動作しているか確認します。

管理画面へのアクセス確認https://admin.xyz.com/wp-admin にアクセスし、通常どおりログインしてサイトを管理できるかを確認します。
リダイレクトの確認https://www.xyz.com/wp-adminhttps://www.xyz.com/wp-login.php にアクセスし、正しくサブドメインにリダイレクトされるかどうかを確認します。

まとめ

ここまでの設定を行うことで、WordPress の管理画面を公開サイトから切り離し、サブドメイン上で安全に運用できます。管理画面と公開サイトを分けることで、安全性を高めつつ、表示の安定性や将来的な拡張にも対応しやすい構成になります。規模の大きなサイトや、より安定した運用を目指す場合に有効な方法です。

WordPress の最適化について他にもアイデアがあれば、ぜひこちらまでメールで教えてください:
eather@export-japan.co.jp

日本語翻訳:K. Shimazaki