2026年7月28日

2026年7月28日

WordPressアドレスとサイトアドレスの不一致を直す方法(siteurl・home)

WordPress の URL の設定は2つあります。管理画面の「設定」→「一般」にある WordPress アドレス (URL) と サイトアドレス (URL) です。ドメイン変更・サーバー移転・HTTPS 化のあとにこの2つが実際の URL と食い違うと、サイトが表示されない、管理画面に入れないといった症状が出ます。この記事では、2つの設定の意味、正しい値の決め方、状況に応じた直し方を説明します。

2つの設定の意味

管理画面の表示 データベースの wp_options の名前 wp-config.php の定数 意味
WordPress アドレス (URL) siteurl WP_SITEURL WordPress 本体のファイル(wp-admin・wp-includes)がある場所
サイトアドレス (URL) home WP_HOME 訪問者がブラウザに入力するサイトの URL

公式ドキュメントでは、どちらも https:// を含め、末尾にスラッシュを付けない形で書くよう案内されています。

2つが違っていてよい場合

多くのサイトでは2つは同じ値です。違っていて正しいのは、WordPress 本体をサブディレクトリーに置き、サイトはドメイン直下で見せる構成(「WordPress を専用ディレクトリーに配置する」構成)のときです。

  • WordPress アドレス (URL): https://example.com/wordpress
  • サイトアドレス (URL): https://example.com

この構成では、ドメイン直下に置いた index.php の読み込み先が次のように書き換えられています。

require dirname( __FILE__ ) . '/wordpress/wp-blog-header.php';

この構成を意図していないのに2つの値が違う場合や、どちらかが実際の URL(ドメイン・http/https・www の有無)と合っていない場合が、直すべき「不一致」です。

よくある症状と原因

症状 よくある原因
「リダイレクトが繰り返し行われました」と表示される home が http://、サーバーは https:// へ転送している。または www の有無が Web サーバー側の転送設定と逆
管理画面にログインすると旧ドメインへ飛ばされる 移転後も siteurl・home が旧ドメインのまま
ページは出るが CSS・画像が読み込まれず崩れる siteurl が旧ドメインや http:// のままで、ファイルの URL が誤って出力されている
「設定」→「一般」の2つの欄が灰色で編集できない wp-config.php で WP_HOME・WP_SITEURL が定義されている(定義した値が優先される)
リバースプロキシや CDN の配下で HTTPS にしたらループする WordPress 側に「HTTPS で来ている」ことが伝わっていない(後述)

作業前の準備

  1. データベースとファイルのバックアップを取ります。
  2. 正しい URL を1つに決めます。https か http か、www を付けるか付けないかを、実際にブラウザでアクセスして転送後に残る URL で確認します。
  3. 現在の値を確認します。WP-CLI が使える場合は次のとおりです。
cd /var/www/html/wordpress
wp option get siteurl
wp option get home
grep -nE "WP_HOME|WP_SITEURL|RELOCATE" wp-config.php

grep で WP_HOME などが見つかった場合は、データベースの値より wp-config.php の値が使われています。直す場所は wp-config.php です。

直し方1: 管理画面から変更する

管理画面に入れる場合は、「設定」→「一般」で WordPress アドレス (URL) とサイトアドレス (URL) を正しい値にして「変更を保存」を押します。保存すると新しい URL のログイン画面に移ることがあるので、新しい URL でログインし直します。

管理画面に入れない場合は、次の方法を使います。

直し方2: wp-config.php に定数を書く

wp-config.php の「編集が必要なのはここまでです」(英語版では That's all, stop editing!)の行より上に、次の2行を追加します。

define( 'WP_HOME', 'https://example.com' );
define( 'WP_SITEURL', 'https://example.com' );
  • この方法はデータベースの値を書き換えず、定義した値で上書きして使います。
  • 定義している間は、管理画面の2つの欄は編集できません。
  • サブディレクトリー構成の場合は、WP_SITEURL を https://example.com/wordpress のように本体の場所にします。

ログインできるようになったら、管理画面またはこの後の WP-CLI でデータベースの値も正しくしておき、定数を残すか外すかを決めます。定数を残す場合は、以後の URL 変更でも wp-config.php を直す必要があります。

直し方3: WP-CLI で変更する

サーバーに SSH で入れる場合は、WP-CLI で変更するのが手早い方法です。

cd /var/www/html/wordpress
wp option update home 'https://example.com'
wp option update siteurl 'https://example.com'

ドメインを変えた場合は、記事本文やウィジェットに残った旧 URL も置き換えます。先に --dry-run で件数を確かめてから実行します。

wp search-replace 'https://old.example.com' 'https://example.com' --skip-columns=guid --dry-run
wp search-replace 'https://old.example.com' 'https://example.com' --skip-columns=guid

wp search-replace はシリアライズされたデータの長さも合わせて書き換えます。公式ドキュメントでは、投稿の guid 列は変更しないよう案内されているため、--skip-columns=guid を付けています。

直し方4: データベースを直接書き換える

WP-CLI も管理画面も使えない場合は、phpMyAdmin や mysql コマンドで wp_options を直接書き換えます。テーブル名の接頭辞は wp-config.php の $table_prefix で確認し、wp_ 以外なら読み替えてください。

SELECT option_name, option_value FROM wp_options WHERE option_name IN ('siteurl', 'home');

UPDATE wp_options SET option_value = 'https://example.com' WHERE option_name = 'siteurl';
UPDATE wp_options SET option_value = 'https://example.com' WHERE option_name = 'home';

この SQL で直るのは2つの設定だけです。本文中の旧 URL は残るので、ドメイン変更の場合は前の項の wp search-replace や、シリアライズを考慮する置換ツールを使います。本文を SQL の REPLACE で一括置換すると、シリアライズされたデータの長さが合わなくなり、ウィジェットやテーマの設定が壊れることがあります。

その他の方法(一時的な手段)

公式ドキュメントには、次の一時的な方法も載っています。どちらも直したあとに元に戻す必要があります。

  • functions.php に update_option() を書く: 有効なテーマの functions.php の <?php の直後に次の2行を書き、ログイン画面か管理画面を数回読み込むと値が書き換わります。直ったら2行を消します。
update_option( 'siteurl', 'https://example.com' );
update_option( 'home', 'https://example.com' );
  • RELOCATE 定数: wp-config.php に define( 'RELOCATE', true ); を書き、新しいサーバーの wp-login.php からログインすると、WordPress アドレス (URL) がログインした URL に合わせて更新されます。「設定」→「一般」で値を確かめて保存したら、定数を削除するか false にします。公式ドキュメントでは、有効のまま残すのは安全でないとされています。

リバースプロキシ・CDN の配下で HTTPS にした場合

ロードバランサーや CDN で HTTPS を終端し、WordPress のサーバーには HTTP で届く構成では、URL を https:// にしてもリダイレクトのループが起きることがあります。WordPress がリクエストを HTTP と判断するためです。プロキシが X-Forwarded-Proto ヘッダーを付けている場合は、公式ドキュメントの例のように wp-config.php に次を書きます(「編集が必要なのはここまでです」の行より上)。

if ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && strpos( $_SERVER['HTTP_X_FORWARDED_PROTO'], 'https' ) !== false ) {
	$_SERVER['HTTPS'] = 'on';
}

このヘッダーはプロキシが付けるもので、プロキシを通らずに直接届くリクエストでは外部から偽装できます。WordPress のサーバーにはプロキシからだけ届くようにしておきます。

直したあとの確認

  1. ブラウザのキャッシュと Cookie を消すか、プライベートウィンドウで開き、トップページと管理画面が表示されることを確かめます。
  2. キャッシュ系プラグインやサーバーのキャッシュを使っている場合は削除します。
  3. 「設定」→「パーマリンク」を開いて「変更を保存」を押し、書き換えルールを作り直します。
  4. 旧 URL から新 URL へ転送する場合は、Web サーバーで 301 転送を設定します。HTTPS への転送は HTTPからHTTPSへのリダイレクト設定 を参考にしてください。

移転後にページが 404 になる場合は 移行後の404エラーの直し方、移転の全体の流れは サーバー移転の手順 も参考にしてください。

まとめ

  • WordPress アドレス (URL) は siteurl(本体の場所)、サイトアドレス (URL) は home(訪問者が使う URL)です。サブディレクトリー構成以外では同じ値にします。
  • 管理画面に入れるなら「設定」→「一般」、入れないなら wp-config.php の WP_HOME・WP_SITEURL、WP-CLI の wp option update、wp_options の直接編集で直します。
  • ドメイン変更では本文の旧 URL も wp search-replace(guid は除外)で置き換えます。
  • HTTPS をプロキシで終端している場合は、X-Forwarded-Proto を見て $_SERVER['HTTPS'] を設定します。

お気軽にご相談ください

お見積りへ お問い合わせへ
▲