本文へスキップ

WordPressをサブディレクトリにインストールしてURLを隠す方法

WordPressをサブディレクトリにインストールして、公開URLはルート表示のまま見せる方法をまとめます。すでに動いているサイトをあとから移す手順と、逆に階層を上げてルートへ戻す手順も扱います。

僕は最近、WordPressのコーディングだけでなく、サーバー移転や新規インストールの相談を受けることが増えました。サブディレクトリへの移行を頼まれることもあります。今回は、サブディレクトリ(下位フォルダ)にインストールして、公開URLはルートのまま表示する方法を紹介します。

なぜサブディレクトリにインストールするのか

WordPressをルートディレクトリにインストールすると、サーバーの一番上の階層にファイルが大量に展開されます。wp-config.phpwp-login.phpwp-includes フォルダなど。本体のファイルだけで20個以上あります。

ここに自分で作ったファイルや、WordPress以外のシステムのフォルダが加わります。すると、どれがWordPressのファイルなのか判別しづらい状態に。

サブディレクトリに入れておくと、次のようなメリットがあります。

  • WordPress本体のファイルが1つのフォルダにまとまるので、ルートディレクトリがすっきりします
  • サイトの移行がしやすい — フォルダごと移動すればいいので、サーバー移行や環境の複製が楽になる
  • 同じドメインの下に別のWordPressやLPを追加するときも、フォルダを分けて管理できます
  • セキュリティ上の配慮にもなる — 管理ファイルがルート直下にないぶん、攻撃の対象になりにくい

クライアントワークでは、納品後にサイトの構成を変えたり、別のコンテンツを追加したりするケースがよく出てきます。最初からサブディレクトリで構築しておくと、そうした変更にも柔軟に対応できます。

wp-admin・wp-includes は更新で入れ替わり、wp-content だけが残ることを示した図

WordPressのディレクトリ構成(wp-admin・wp-includes・wp-content)

WordPressをインストールすると、大きく3つのフォルダと、いくつかのPHPファイルが置かれます。

  • wp-admin — 管理画面そのものです。中のファイルを編集する場面はありません
  • wp-includes — WordPressの本体機能が入っています。ここも触りません
  • wp-content — テーマ・プラグイン・アップロードした画像。制作で触るのは基本ここだけです

ファイルのほうは wp-config.php がデータベースの接続情報を持っています。.htaccess はパーマリンク(記事URLの形式)の書き換えルールです。この2つは、サブディレクトリへ移すときに扱いが変わります。

3つのフォルダのうち、自分で中身を足していくのは wp-content だけです。残りの2つはWordPressを更新するたびに丸ごと入れ替わります。カスタマイズを wp-includes に書くと、次の更新で消えます。

サブディレクトリへのインストール手順

WordPressをインストールするとき、インストール先のディレクトリ名を指定するだけです。それでサブディレクトリへの設置ができます。ディレクトリ名は /wp にするのが一般的です。

設定方法はサーバー会社によって異なります。多くのレンタルサーバーでは、WordPress簡単インストール機能に「インストール先ディレクトリ」の入力欄があります。

  • エックスサーバー — 「WordPress簡単インストール」の設定画面で、URL末尾にディレクトリ名を入力
  • ConoHa WING — 「WordPressインストール」の設定画面で、URLの末尾にディレクトリ名を入力
  • さくらのレンタルサーバ — 「クイックインストール」で、インストール先にディレクトリ名を指定

ここから先は、/wp にWordPressを設置した前提で説明を進めます。

サブディレクトリに置いたWordPressのインストール画面。サイトのタイトルとユーザー名を入力する

公開URLからサブディレクトリを消す設定

サブディレクトリにインストールしたままだと、公開URLが https://example.com/wp になります。ユーザーがアクセスするURLは https://example.com にしたいので、ここからが本題です。

  • 管理画面で「サイトアドレス」を変更する
  • サブディレクトリの index.php を編集してルートに設置する
  • .htaccess をルートに設置する
サブディレクトリ設置における公開URLとWordPress本体の場所の対応図

管理画面の設定

まず、WordPressの管理画面で2つのURLの設定を確認します。サイドバーから「設定」→「一般」を開いてください。

設定画面には、2つのURL入力欄があります。

  • WordPressアドレス(URL) — WordPress本体がインストールされている場所。サブディレクトリのパスが入っているのが正しい状態
  • サイトアドレス(URL) — ユーザーがブラウザでアクセスするときのURL。こちらをルートディレクトリに変更する

変更前

WordPressアドレス:https://example.com/wp
サイトアドレス  :https://example.com/wp

変更後(サイトアドレスから /wp を削除する)

WordPressアドレス:https://example.com/wp  ← そのまま
サイトアドレス  :https://example.com      ← /wp を削除

WordPressアドレスは変更しません。ここを間違えると、管理画面にアクセスできなくなることがあります。変更するのは「サイトアドレス」だけです。

変更を保存すると、一時的にサイトが表示されなくなります。次の手順を終えれば表示されるようになるので、慌てなくて大丈夫です。

WordPressの一般設定。WordPressアドレスはwpを含み、サイトアドレスはルートになっている

index.phpと.htaccessの設定

次に、FTPソフト(FileZillaなど)でサーバーに接続します。サブディレクトリ(/wp)の中にある index.php.htaccess をダウンロードします。

変更するのは、ダウンロードした index.php の1箇所だけです。

変更前

require __DIR__ . '/wp-blog-header.php';

変更後

require __DIR__ . '/wp/wp-blog-header.php';

/wp-blog-header.php の前に、サブディレクトリ名 /wp を足すだけです。これで、ルートの index.php がサブディレクトリ内のWordPress本体を読み込めるようになります。

ここで書いているコードの意味が分からなくても、そのまま先へ進んで問題ありません。書き換える場所さえ合っていれば動きます。

コードを変更した index.php と、ダウンロードしたままの .htaccess を、ルートディレクトリにアップロードします。

  • index.php(コードを変更したもの)
  • .htaccess(ダウンロードしたそのまま)

サブディレクトリ内の index.php.htaccess はそのまま残しておいて構いません。削除する必要はありません。

設定後の確認

アップロードが完了したら、次の3点を確認してください。

  • https://example.com にアクセスして、サイトのトップページが表示されるか
  • https://example.com/wp/wp-admin にアクセスして、管理画面にログインできるか
  • 各ページのリンクをクリックして、正常に遷移するか

トップページが表示されないときは、index.php のコード変更が正しいか確認します。アップロード先がルートディレクトリになっているかも見直してみます。

パーマリンクを変えたら404になった、管理画面がリダイレクトループから抜けられない、といった設置後のトラブルは、続編のWordPressをサブディレクトリに設置する方法(応用編)で原因別に切り分け方をまとめています。

パーマリンク設定の画面。表示されるURLの例からwpが消えている

すでに動いているWordPressをあとからサブディレクトリへ移す

ここまでは新規インストールの話でした。すでに公開しているサイトを、あとからサブディレクトリへ移したいこともあります。作業は増えますが、やること自体は同じです。順番を守るのがポイントになります。

移す前にバックアップを取る

ファイルとデータベースの両方を控えます。僕はサーバーの自動バックアップとは別に、手元にも1式ダウンロードしています。途中で表示が崩れても、戻す先があれば落ち着いて進められます。

稼働中のサイトを触るのが不安なときは、お問い合わせから声をかけてもらえれば返信します。

先に「WordPressアドレス」だけを変える

管理画面の「設定」→「一般」で、WordPressアドレスの末尾に /wp を足します。サイトアドレスは触りません。新規インストールのときとは逆で、こちらだけを変更する形です。

WordPressアドレス:https://example.com/wp  ← /wp を追加
サイトアドレス  :https://example.com      ← そのまま

保存した時点では、まだファイルを移動していないのでサイトは表示されなくなります。ここは想定どおりなので、そのまま次へ進みます。

ファイルを移して index.php と .htaccess を置き直す

FTPソフトでサーバーに接続し、ルートに /wp フォルダを作ります。そこへWordPress本体のファイルを移動します。wp-adminwp-includeswp-content、それに wp- で始まるPHPファイル一式です。

wp-config.php/wp の中に入れて構いません。WordPressは1つ上の階層も探しにいくので、ルートに残したままでも動きます。

移動が終わったら、/wp の中の index.php をコピーしてルートに置き、読み込み先のパスを書き換えます。

require __DIR__ . '/wp/wp-blog-header.php';

.htaccess もルートに置きます。ここは新規インストールのときと同じ作業です。

パーマリンクを保存し直す

管理画面(https://example.com/wp/wp-admin)にログインします。「設定」→「パーマリンク」を開き、何も変えずに保存します。これで .htaccess の書き換えルールが作り直されます。トップページは出るのに個別記事だけ404になるときは、たいていこれで直ります。

クライアントのサイトで移行するときは、アクセスの多い時間帯を避けるようにしています。途中の数分間、サイトが表示されない時間が生まれるためです。

サブディレクトリから階層を上げてルート表示に戻す

逆に、/wp に入れていたWordPressをルート直下へ戻すこともあります。サーバーを移すときや、サイトの構成を組み替えるときです。

このときは順番が入れ替わります。先に管理画面のURLを変えると、ファイルがまだ /wp にあるせいで管理画面に入れなくなるからです。ファイルを移してから、URLの設定を直します。

  • /wp の中身をすべてルートへ移動する
  • ルートの index.php のパスを元に戻す(/wp を消す)
  • wp-config.php に2行足して、URLを一時的に上書きする
define('WP_HOME', 'https://example.com');
define('WP_SITEURL', 'https://example.com');

この2行を入れておくと、データベースの値がどうなっていても管理画面に入れます。ログインできることを確認したら、2行を消します。そのあと「設定」→「一般」を開き、両方のURLをルートに直します。

最後にパーマリンクを保存し直せば完了です。2行を残したままにすると、管理画面からURLを変更できない状態になります。

おわりに

WordPressをサブディレクトリに設置して、公開URLだけをルート表示に見せる手順でした。

サーバー会社やプラグインの組み合わせ次第では、この通りに進まない場面もあると思います。WordPressアドレスは変更しないという原則さえ守れば、大きく崩れることはないはずです。

僕は新規構築のときは、この形をひとまず基本にしています。これから新しくサイトを作るなら、ぜひ試してみてください!

設置したあとに実案件で踏んだトラブルとその直し方は、続編のWordPressをサブディレクトリに設置する方法(応用編)で紹介しています。

これまでに作ったサイトは制作実績にまとめています。

Contact

お気軽にご相談ください

X(Twitter)のDM、もしくは本サイトのCONTACTページからご連絡ください。
24時間以内に返信しますので、些細なことでもお気軽にご相談ください。