別ドメインから社長ブログの過去記事を移行した話

データ移行

こんにちは、高木です。

さて、フェアマインドでは当スタッフブログと並行して、社長ブログを公開しています。

以前から社長は別サイトにてブログ(以下、旧ブログ)を公開していたのですが、今回フェアマインドの社長ブログ(以下、新ブログ)立ち上げに伴って、旧ブログの過去記事もこちらに移行しています。

そもそも初めは作業コストを考慮して、全く新規に社長ブログを立ち上げただけだったのですが・・・、後になって過去記事も沢山の人に見てもらいたい!という社長の意向を受けて、移行を実施することになりました。

データ移行

マイナーバージョンは違いましたが旧・新ブログともWordPressの3系を使っているので、データの移行自体は標準のXMLエクスポート→インポートで問題無くできました。

301リダイレクト

各記事の301リダイレクトについてですが、今回は新・旧ブログで下記のようにパーマリンク構造を変えたため、その対応が必要になりました。(移行考えてなかったのでURL設計も雑でした。反省。)
・旧ブログ:http://old.example.com/?p=%post_id%
・新ブログ:https://www.fairmind.jp/president/%year%/%monthnum%/%day%/%post_id%

なまじ投稿日などを入れ込んでしまったため、プラグインを使った単純なリダイレクトができません。エクスポートXMLのデータからmod_rewriteの設定を書きだす、簡単なPHPスクリプトを組んで対応しました。

[php]
<?php
// WordPressのエクスポートXMLファイル
$file = ‘wordpress.2013-05-21.xml’;

// XMLファイル読み込み
$object = simplexml_load_file($file);

$output = "";

foreach ($object->channel->item as $item) {

// 旧URLの投稿idを取得
// 例)http://old.example.com/?p=123 から 123 のみ取得
$id = substr($item->link, 26);

// パーマリンクに合わせて新URLを取得
// 例)https://www.fairmind.jp/president/2013/05/21/123
$url = ‘https://www.fairmind.jp/president/’ . date("Y/m/d/", strtotime($item->pubDate)) . $id;

// Redirect記述を作成
$output .= "RewriteCond %{QUERY_STRING} ^p={$id}$\n";
$output .= "RewriteRule ^$ {$url}? [R=301,L]\n";
}

$output = "<IfModule mod_rewrite.c>\n"
. "RewriteEngine on\n"
. $output
. "</IfModule>\n";

file_put_contents(‘htaccess.txt’, $output);
[/php]

PHPスクリプトを実行すると、次のようなテキストが出力されるので、これを.htaccessに設定します。

[text]
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{QUERY_STRING} ^p=186$
RewriteRule ^$ https://www.fairmind.jp/president/2004/11/16/186? [R=301,L]
RewriteCond %{QUERY_STRING} ^p=188$
RewriteRule ^$ https://www.fairmind.jp/president/2004/11/18/188? [R=301,L]
RewriteCond %{QUERY_STRING} ^p=189$
RewriteRule ^$ https://www.fairmind.jp/president/2004/11/19/189? [R=301,L]



RewriteCond %{QUERY_STRING} ^p=1285$
RewriteRule ^$ https://www.fairmind.jp/president/2013/04/17/1285? [R=301,L]
</IfModule>
[/text]

.htaccess設定後、リダイレクト検証ツールにて、ちゃんと301リダイレクトがされていることも確認できました。

いざ作業を始めてみたら移行した記事は466件もありました。社長の思いも果たせたし、新会社サイトのページボリュームを付けるのにも役立ったし、結果的にやっといて良かったと思います。

弊社の社長ブログ、ジャンル問わず色々な話題に触れていてなかなか面白いですので、ぜひご覧になってみてください!

photo credit: Håkan Dahlström via photopin cc