サブフォルダに作ったWordPressサイトをルートで公開する方法

2025.07.092025.07.09

Web制作 システム

サーバーにWordPressをインストールする場合、ルートに直接インストールすることはセキュリティの面から推奨されていません。サブディレクトリにインストールすることが一般的です。今回はサブフォルダにインストールしたWPサイトを、ルートに公開されているサイトとする設定について説明します。

目的

https://sample.com/wp にインストールしたサイトを https://sample.com で公開する。

前提

●WordPress本体は /wp に設置済み
●テーマ・コンテンツはすべて構築済み
●/wp はBasic認証をかけている(クライアント確認用など)

WordPressの一般設定を変更

管理画面から「設定」「一般」を選択します。下記のように設定されているはずです。

変更前:
WordPress アドレス(URL):https://sample.com/wp
サイトアドレス(URL):https://sample.com/wp

サイトアドレスの方を「公開URLにしたいURL」に変更します。

変更後:
WordPress アドレス(URL):https://sample.com/wp
サイトアドレス(URL):https://sample.com

※サイトアドレスを変更したことで一時的にサイトが表示されなくなる可能性があります。

index.phpをコピーする

sample.com/wp 内のindex.phpをルートにコピーします。
この際に /wp 内にある元のindex.phpは削除しないようにします。

コピーしたファイルを下記のように修正します。

// 修正前(元のまま)
require __DIR__ . '/wp-blog-header.php';

// 修正後(ルートに置いた場合)
require __DIR__ . '/cms/wp-blog-header.php';

index.phpの階層が変わったため、パスを書き直しているだけです。

この変更が完了した時点で固定ページなどはすでに正常に閲覧可能になっているはずです。WP管理画面なども正常に表示されますが、管理画面から更新などを行い、保存しようとすると保存できない状態です。

.htaccessコピーする

sample.com/wp 内の.htaccess ファイルも同じくルートにコピーします。
すでにルートに .htaccess が存在している場合はバックアップを取った上で上書きします。

コピーした.htaccess ファイルには下記のようなWordPressの記述があります。
こちらのパスを書き換えていきます

# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /wp/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wp/index.php [L]
</IfModule>

# END WordPress

下記の2か所を書き換えます。
RewriteBase /wp/ → RewriteBase /
RewriteRule . /wp/index.php [L] → RewriteRule . /index.php [L]

# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

修正後にWPの管理画面から「設定」「パーマリンク」に進み、内容は何も変えない状態で「変更を保存」をクリックします。
パーマリンク構造の設定を新設定で読み込みなおした状態となり、さきほどまでできなかった管理画面内でのページ保存などができるようになります。

サイト表示の確認

当初の目的であった「https://sample.com/wp にインストールしたサイトを https://sample.com で公開する」ができているか確認します。

●https://sample.com にアクセスして正常に表示されるかを確認。
●メニュー、下層ページ、画像などが問題ないかを確認。
●/wp にアクセスしても同じように表示されるかを確認。

メディアからアップロードした画像や動画について

今回の方法では「メディア」からアップロードした画像や動画のパスは変更されません。
下記のようなパスのままとなります。
wp/wp-content/uploads/フォルダ名/画像名

サイト内リンクがリンク切れになる場合

全体的には正常に表示されるものの、一部のサイト内リンクがリンク切れになる場合、リンク設定は絶対パスで設定されている可能性があります。

サブフォルダのサイトの対応

/wp のサイトもそのまま表示されてしまうと、クローラーに重複コンテンツと判断される可能性があります。その場合、SEO的には悪影響となってしまいます。何らかの対策をした方がよいでしょう。以下のような方法があります。

クロールを拒否する

/wp 以下をクロールしなければ問題ないため、robots.txt ファイルを使用します。
ルートに robots.txt ファイルを作成し、以下のように記述します。

User-agent: *
Disallow: /wp/

これでGoogleのクローラーなどは防ぐことができ、重複コンテンツと判断されることはなくなります。但し、/wp 以下がアクセス可能なままの状況は変わらないため、クロールは拒否した上で他の方法と併用した方がよいでしょう。

.htaccess ファイルでリダイレクトを設定する

ルートの .htaccess に下記を追記します。/wp へのアクセスがあった場合、ルートにリダイレクトする設定です。

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/wp(/.*)?$
RewriteRule ^wp(/.*)?$ /$1 [R=301,L]

.htaccess ファイルを使用した制御方法でも、下記のようにアクセスを全面的に禁止してしまうと、実体である/wp 以下のファイルが一切表示されなくなり、全ページが非公開状態になってしまいます。.htaccessファイルの設定は慎重に行いましょう。

<RequireAll>
    Require all denied
</RequireAll>

Basic認証をかける

これも.htaccessを使った方法ではありますが、/wp 以下にBasic認証をかける方法もあります。直接リンクを開かれた場合にパスワード入力画面が出てしまうデメリットはありますが、それが問題にならなければよい方法です。

まとめ

サブフォルダにインストールしたWordPressサイトをルートで公開する方法を紹介しました。ルートに既存のサイトがすでに存在している場合や、サブフォルダに旧WordPressサイトが存在する場合でも、この方法を応用すれば、設定ファイルの書き換えのみでサイトを入れ替えて公開することができます。

 

お問い合わせCONTACT

株式会社エー・エム・ティーは
印刷物からホームページ制作・更新運用管理までトータルサポート。
企業様の課題解決や企業価値向上のお手伝いをいたします。

受付9:00~18:00 ※土日祝除く