制作のご依頼はこちらから➾ ココナラ

【備忘録】ルートディレクトリにいれたワードプレスサイトをサブディレクトリに移動させ、ルートディレクトリのURLで表示させる手順

当ページのリンクには広告が含まれています。

こちらのブログ(https://airiitou.com)は、Webデザイナーとして勉強中に作ったサイトで、ドメイン直下(ルートディレクトリ)にワードプレスをインストールしてしまった為、
その後サブディレクトリやサブドメインにポートフォリオサイトやデモサイトを作成していく過程で、ドメイン直下(ルートディレクトリ)にファイルが煩雑し見にくく管理しずらくなっていました💦

セキュリティーの面でのリスクもあるので、投稿記事が多くないうちにサブディレクトリにサイトを移動させ、フォルダを整理したいと思い、その作業の過程を備忘録として記事にしてみました!
よかったら参考にしてみてください。

サーバーを触る作業を行う時は、まずテストサーバーで試すなどして確認してから自己責任でおこなって頂きますようお願い致します。

目次

新しく作ったサブディレクトリに現行サイトをコピーして入れる。

現行サイトのデータを All-in-One WP Migration プラグインでエクスポートしておく。

All-in-One WP Migration プラグイン

public_html の中に新しくワードプレスをインストールするフォルダを作る。

(今回はwp_siteとゆうフォルダ名にしています。)

サーバーのフォルダ構成
ドメイン直下にWordPressをインストールしたためファイルがごちゃごちゃして階層がわかりにくくなっています💦

FTPツールでサーバーにアクセスしてフォルダを作成する方法とXserverのサーバー管理→サブドメイン作成からでもフォルダを作成できます。

その場合、ドキュメントルートを  /airiitou.com/public_html/(サブドメイン名)/ を選択してください。
サブドメイン名が wp_site になります。

Xserverの「WordPress簡単インストール」で新しく作成したサブディレクトリにWordPressをインストールする。

https://airiitou.com/wp_site にWordPressをインストールする。

XserverのWordPressインストール画面

この時のWordPressのログイン情報(ユーザー名・パスワード)はその後エクスポートする現行サイトのものに上書きされます。(ブログ名・ユーザー名も上書きされるのでここでの入力は適当なもので大丈夫です。)

現行サイトからエクスポートしたデータを、サブディレクトリ(wp_site) にインポートする。

こちらのサイトにも All-in-One WP Migration のプラグインをインストールし、現行サイトのデータをインポートする。

https://airiitou.com/ ←現行サイト
https://airiitou.com/wp_site/ ← 新サイト

今この2つのURLで同じサイトが見れる状態です。

WordPressの管理画面で「サイトアドレス」を本番のドメインに変更する。

https://airiitou.com/wp_site/ のWordPress管理画面→設定→一般をクリック。

Word Press一般設定 管理画面

サイトアドレス(URL)のみを変更する。※WordPress アドレス(URL)はさわらない。

index.phpとhtaccessのファイルを書き換えてルートディレクトリにアップロードする。

FTPツール(私はCyberduck(サイバーダック)を利用しています。)でサーバにアクセスし、wp_siteにインストールしたWordPressの中にあるindex.php と .hpaccess のファイルをダウンロードします。
Cyberduck(サイバーダック)の場合、.htaccessファイルは隠しファイルになっているので、環境設定から「’,’で始まるファイルを表示」にチェックをし表示されるようにしてあげることでファイルをダウンロードできます。

また、Xserverのサーバー管理→.htaccess編集からファイル(ルートディレクトリにあるhtaccessファイル)を編集することが出来ます。
Xserverのファイル管理からはそれぞれのサブディレクトリにインストールされたWordPressサイトにあるhtaccessファイルを編集することができます。

index.phpファイル、.htaccessファイルをダウンロードした後、ルートディレクトリにインストールしているサイトを削除します。
(※index.phpファイル、.htaccessファイルを編集しルードディレクトリにアップロードしてからサイトを削除すると、アップロードしたindex.phpファイル、.htaccessファイルも消えてしまうと思ったので、この順序で作業しています。検証はしてませんので、こちらのファイルはサイトを削除しても残っているかもしれません。)
Xserverにログイン→サーバー管理→WordPress簡単インストール→インストール済WordPress一覧から削除するサイトURLを選択し削除します。
その後データーベースも削除するのでMySQLデータベース名・MySQLユーザー名をメモ帳にメモするか、スクショを撮っておいて下さい。

こちらのサイトを削除すると、今https://airiitou.comにアクセスしても 403エラーになってしまいサイトが表示されませんので、早急に修正したindex.phpファイル・ htaccessファイルをルートディレクトリにアップロードする必要があります。

もしくは、修正したindex.phpファイル・ htaccessファイルをルートディレクトリにアップロードしてから、
FTPツールでサーバーにアクセスし、アップロードしたファイル(index.php・ .htaccess)だけを残して個別にいらないファイル(WordPressのファイル)を削除する方法でもいいと思います。こちらのほうが403エラーが発生しないので確実かとは思いますが、私は前者の方法で作業したのでその手順を以下で説明します。

index.php を 修正してルートディレクトリにアップロードする。

ダウンロードしたindex.php をテキストエディタで開いてファイルの下記にあるこの部分を修正します

/** Loads the WordPress Environment and Template */
require __DIR__ . '/wp-blog-header.php';

[修正前]

/** Loads the WordPress Environment and Template */
require __DIR__ . '/wp_site/wp-blog-header.php';

[修正後]
wp-blog-header.phpの前に wp_site を記述する。

修正したファイルをルートディレクトリ(public_html)にアップロードする。
(wp_siteにあるindex.php とhtaccessファイルはそのままで削除しない。)

私はディレクトリを間違えてアップロードしてしまい、403エラーでページが表示されなくなり、めちゃめちゃ焦りました😭

アップロードする階層を間違えないようにご注意ください!

Xserver管理画面でhtaccessファイルを修正する。

今回はXserverのサーバー管理からhtacessファイルを修正します。

※追記:この書き方↑だと下層ページはhttpsにリダイレクトされないので注意!#BEGIN WordPressの上に書いてください。
# BEGIN WordPressの上に書くことによって下層ページもhttpsにリダイレクトされる。
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On

# wwwをなしで統一する
RewriteCond %{HTTP_HOST} ^www\.airiitou\.com$
RewriteRule ^(.*)$ https://airiitou.com/$1 [R=301,L]

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /wp_site/   ←ここを修正する
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wp_site/index.php [L]  ←ここを修正する
</IfModule>
# END WordPress
SetEnvIf Request_URI ".*" WpCommentDeny

[修正前]

# BEGIN WordPressの上に書くことによって下層ページもhttpsにリダイレクトされる。
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On

# wwwをなしで統一する
RewriteCond %{HTTP_HOST} ^www\.airiitou\.com$
RewriteRule ^(.*)$ https://airiitou.com/$1 [R=301,L]

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
SetEnvIf Request_URI ".*" WpCommentDeny

[修正後]

wp_site の部分を削除します。

これで、サブディレクトリ(wp_site)にあるサイトをルートディレクトリのURLで表示することができました!

ダッシュボードに入るとwp_siteのフォルダの中にサイトがあることがわかります。

※サイトの階層が変わったので内部リンクが切れています。リンクチェックをして、リンクを修正してください。

削除したサイトのデーターベースを削除する。

後は削除したサイトのデータベースを削除したら作業完了です。

Xserverのサーバー管理からMySQL設定をクリック。
削除したサイトのデータベースも削除してください。(データベース名を間違えないように注意!)

MySQLユーザー一覧のタブをクリック、ユーザーアカウントも削除してください。(ユーザー名も間違えないように注意!)

サーバー関係の作業は一つ一つの作業の意味を理解し、確認しながら慎重に進めます。
特にお客様のサーバーで作業する時は特に緊張しますよね。自分のサーバー(テストサーバー)で同じ環境を作り、作業工程を一通り行ってから、お客様のサーバーで作業を行うと安心です。

こちらの記事が問題解決のお役に立って頂ければ幸いです!

断然おすすめ!サーバーならXserver

自身でもXserverを使用しており、お客様にも
Xserverをおすすめさせて頂いております。

マルチドメイン、サブドメイン
メールアドレス、FTPアカウント、全て無制限!

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
目次