WordPressブログをルートからサブディレクトリに移動する方法

私は今まで、WordPress のブログをドメインのルートディレクトリに作っていました。しかし、このままだと、ルートファイルがゴチャゴチャして見にくくなります。また、将来ホームページスペースとして使う場合にも使いにくくなります。そこで、ブログをルートからサブディレクトリに移動することにしました。

ブログの アドレス楽天 もサブディレクトリに変更しました。ブログというものは、MySQLというデーターベースを使っています。この為、ブログの移動はホームページの移動のように簡単にはできません。やり方を間違えるとブログが消えてしまうことが考えられます。

WordPressブログのバックアップ方法

まず、WordPressブログのデーターベースのバックアップをします。これは、Coreserver.jp の管理画面でデーターベースの保存をします。public_html のひとつ上の階層に mysql_.**********.dump という18MB程度のファイルができました。(投稿数100件程度)

次にWordPressブログの管理画面のツールから、データーのエクスポートをします。これはパソコンの中にデーターをダウンロードします。「wordpress.2010-11-15.xml」のようなファイル名で500kB程度のファイルでした。

念の為に、ワードプレスのフォルダもFTPソフト(FFFTP等)でミラーリングダウンロードしておきます。画像ファイルは、データーベースの中には無いので、FTPでダウンロードできます。

ブログをサブディレクトリに移動する手順を説明した公式サイトは次の所にあります。ここでは簡単にできるように書いてありますが、実は色々な所でつまずきます。自信がない人はやめた方が良いでしょう。

サブディレクトリに移動する手順

私もさんざん迷いましたが、将来を考えて、結局やってみることにしました。次に私が経験した方法を記述します。

ルートディレクトリのブログを hoge.jp/wp/ に移動する方法

WordPress をルートディレクトリにインストール済みの場合、WordPress ファイルを専用ディレクトリwpへ移動するには次のようにします。

ブログの管理パネルで 設定 > 一般設定パネルを開きます。WordPress のアドレス (URL)欄を、新しい WordPress の URL に変更します。

WordPress のアドレス (URL): http://hoge.jp/wp

ブログのアドレス (URL)欄も、新しい WordPressの URL に変更します。同じにした方が後々問題がありません。

変更を保存(Update Options)をクリックします。(この時点でエラーメッセージが出ても気にしません)

WordPressファイルを、作成した新ディレクトリ(WordPress address)へ移動します。ここでは、コピーではなくて移動にします。

WordPress ディレクトリの index.php ファイルをテキストエディタで開きます。次の修正を行ない、ファイルを保存します。
修正前:require(‘./wp-blog-header.php’);
修正後:require(‘./wp/wp-blog-header.php’);

新しい URL からログインします。例、http://hoge.jp/wp/wp-admin/

パーマリンクを設定している場合、パーマリンク設定パネルを開き、パーマリンク構造を更新してください。.htaccess に適切なパーミッションを設定してあれば、WordPress が自動で .htaccess を更新します。

これだけではありません。各フォルダやファイルのパーミッションの見直しをしてください。また、テーマの中のPHPファイルを変更している場合はこの中のアドレスの変更も必要です。

ページの永久移転の設定

http://hoge.jp/ からhttp://hoge.jp/wp/ へ移転したので、今までのアドレスのままでも転送して表示されるようにします。ルートのhtaccessファイルに次の行を追加します。私は追加ではなく、この2行だけにしました。

RewriteEngine on
RewriteRule ^(.*)$ /wp/$1 [L,R=301]

ここで、「R=301」は永久移転という意味です。http://hoge.jp/ へのアクセスがhttp://hoge.jp/wp/ に転送されて、表示アドレスが http://hoge.jp/wp/ となります。

もし、「R=301」が無いと、http://hoge.jp/ へのアクセスがhttp://hoge.jp/wp/ に転送されますが、表示アドレスが http://hoge.jp/ のままとなります。

このままでは永久ループの可能性があるので、hoge.jp/wp/のディレクトリのhtaccessファイルに次の行を追加します。

RewriteEngine Off

永久ループしない安全な方法は、ルートに index.php ファイルを作って、内容を次のように設定します。つまり、/wp/へ転送するだけです。この場合はhttp://hoge.jp/にアクセスがあった時だけ/wp/へ転送されます。直接ブログの中にアクセスがあっても転送はされません。

<html>
<head>
<meta HTTP-EQUIV="Refresh" CONTENT="0;URL=http://hoge.jp/wp/">
</head>
</html>

WordPress 画像を表示するように変更する方法

このままではWordPress 画像が表示されないので、次に画像を表示するように変更します。画像はhttpからの絶対アドレスになっています。

先程、ブログの管理画面のツールから、データーのエクスポートをした、データー「wordpress.2010-11-15.xml」の内容をエディターで修正します。エディターはTeraPadのようなutf-8の文字コードに対応したものを使います。メモ帳ではできません。

修正する内容は次のようにします。http://hoge.jp/ を http://hoge.jp/wp/ に置換します。

次にブログの管理画面の投稿から、投稿を全て削除して、ゴミ箱からも削除します。これをしないとデーターの上書きができません。カテゴリーも削除した方が良いのかも知れません。私はカテゴリーを削除しなかったので、カテゴリーが2重に登録されてしまいました。

次にブログの管理画面のツールから、データーのインポートをします。これでたぶんうまくいくはずです。以上、慎重にやってください。