はじめに:なぜWordPressをサブディレクトリに置くのか?
Webサイトを運営していると、「WordPressのコアファイルと、他のファイル(静的HTMLなど)をスッキリ分けたい」と感じることはありませんか?
通常、WordPressをインストールすると、ドメインのルートディレクトリ(例: www/)直下に wp-config.php や wp-content フォルダなどが配置されます。
www/
├ wp-config.php
├ wp-content/
├ wp-admin/
├ index.php
└ .htaccess
この構成はシンプルですが、ルートディレクトリが雑然としがちです。
そこで今回は、WordPressのコアファイル一式を特定のサブディレクトリ(例: /manage/)に移動させつつ、Webサイトの表示URLはルート(https://example.com/)のまま維持する方法を解説します。
この設定により、以下のようなスッキリしたディレクトリ構成を目指します。
www/
├ manage/ (ここにWordPressコアファイル一式を移動)
│ ├ wp-config.php
│ ├ wp-content/
│ └ ...
├ index.php (ルート表示用に編集)
└ .htaccess (ルート表示用に編集)
【本記事の前提】
この記事は、https://example.com/manage/ というURLでインストールされたWordPressを、https://example.com/ で表示させたい、というニーズに基づいています。もし、https://example.com/manage/ のまま表示して問題ない場合は、これから説明する作業の多くは不要です。
※manage というディレクトリ名は一例です。wp や cms など、プロジェクトのルールに合わせて読み替えてください。
WordPressをサブディレクトリに移動する手順
それでは、具体的な手順を見ていきましょう。作業前に、必ずファイルのバックアップを取得してください。
ステップ1. サブディレクトリの作成とファイル移動
まず、WordPressのインストール先と同じ階層(例: www/)に、新しいディレクトリを作成します。(ここでは例として manage とします)
次に、.htaccess と index.php を除く、すべてのWordPress関連ファイルとディレクトリ(wp-config.php, wp-content/, wp-admin/, wp-includes/ など)を、作成した manage ディレクトリ内に移動させます。
ステップ2. index.php と .htaccess をルートにコピー
manage ディレクトリ内に移動させたファイルの中から、.htaccess と index.php の2つを、ルートディレクトリ(www/)にコピーします。
※この時点で manage ディレクトリ内の .htaccess は不要になるため、削除しておくと混乱を避けられます。
ステップ3. ルートディレクトリの .htaccess を編集
ルートディレクトリ(www/)にコピーした .htaccess を開き、内容を以下のように変更します。manage の部分は、ご自身が作成したサブディレクトリ名に置き換えてください。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/manage/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /manage/$1
RewriteRule ^(/)?$ manage/index.php [L]
</IfModule>
ステップ4. ルートディレクトリの index.php を編集
次に、ルートディレクトリ(www/)の index.php を開き、最終行にある require 文のパスを変更します。
変更前:
require __DIR__ . '/wp-blog-header.php';
変更後: (/manage を追記)
require __DIR__ . '/manage/wp-blog-header.php';
ステップ5. WordPress管理画面でURL設定を変更
ここまでの設定で、サイトの表示はルートURL(https://example.com/)に切り替わっているはずですが、管理画面へのログインURLが変更されています。
ブラウザで、https://example.com/manage/wp-login.php のように、新しいサブディレクトリ経由のURLで管理画面にアクセスし、ログインしてください。
ログイン後、「設定」>「一般」メニューを開き、以下の2つの項目を編集します。
- WordPress アドレス (URL):
https://example.com/manage
(WordPressのコアファイルがある場所) - サイトアドレス (URL):
https://example.com
(サイトを実際に表示する場所)
変更を保存します。
【注意点】
この設定を保存すると、管理画面からログアウトさせられる場合があります。再度 /manage/wp-login.php からログインし直してください。
ステップ6. パーマリンク設定の更新
CSSが効かない、下層ページが404エラーになるなどの問題が発生した場合、URLの書き換えルール(リライトルール)がうまく反映されていない可能性があります。
「設定」>「パーマリンク設定」を開き、何も変更せずに「変更を保存」ボタンをクリックしてください。これにより、新しいURL構造で .htaccess の情報が更新されます。
ステップ7. 完了
これで全ての設定は完了です!
サイトが https://example.com/ で正しく表示され、管理画面が https://example.com/manage/wp-login.php でアクセスできることを確認してください。
(補足)作業の順序について
今回は「ファイルを先に移動し、後から管理画面でURLを変更する」という手順を取りました。
先に管理画面でURLを変更してからファイル移動を行う方法もありますが、URL変更直後にサイトが表示できなくなり、焦ってしまう可能性があります。初心者の方は、今回紹介した手順(ファイル移動 → URL変更)の方が、落ち着いて作業を進めやすいためおすすめです。
参考サイト
よくある質問(FAQ)
- Q1. 設定後、サイトが真っ白になったり、500エラーが出たりします。
- A1.
.htaccessの記述ミスが最も考えられます。特にmanageの部分など、サブディレクトリ名が正しいか確認してください。また、index.phpのrequireパスが間違っている可能性もあります。もう一度、手順3と4を見直してみましょう。 - Q2. なぜWordPressのアドレスとサイトアドレスを分けるのですか?
- A2. 「WordPress アドレス」はWordPressのシステム本体がどこにあるかを示し、「サイトアドレス」は訪問者がWebサイトを見るためのURLを示します。これらを分けることで、「システムは
/manage/に置き、表示は/で行う」という柔軟な構成が可能になります。 - Q3. この設定を元に戻す(サブディレクトリからルートに)にはどうすればよいですか?
- A3. 基本的には逆の手順を行います。まず管理画面で「WordPress アドレス」と「サイトアドレス」を両方ともルート(例:
https://example.com)に戻します。次に、/manage/内の全ファイルをルートに移動させ、ルートにある.htaccessとindex.phpをWordPressのデフォルトのもの(あるいはバックアップ)に差し戻し、パーマリンクを更新します。