ウェブ Archive

Home > ウェブ

ウェブ Archive

旧ブログ(sb)→新ブログ(WordPress)へのリダイレクト設定

目次

  1. 旧ブログのアクセスを引き継ぎつつ、個別記事ページを生成していないSereneBach(sb)からWordPressへ移行する方法(このエントリ)
  2. 新ブログのパーマリンク作成(投稿名ベース)
  3. 旧ブログ→新ブログへのパーマリンク対応作成
  4. SereneBachからエクスポートしたデータを編集
  5. WordPressにSereneBachからエクスポートしたデータをインポート
  6. 旧ブログ(sb)→新ブログ(WordPress)へのリダイレクト設定←今ここ
  7. 実際の移行レポートとその後

ここからが本番。旧ブログから新ブログへのリダイレクト設定を行います。SereneBachで個別記事htmlを作成していない場合はキツいです。

個別記事htmlを作成している場合

まずは簡単な方から。個別記事htmlを作成している場合、.htaccessのRedirect permanet機能のみでリダイレクトを行う事が可能です。検索エンジン相手にはステータスコード301を返し移動した事を知らせ、人間が普通にブラウザでアクセスしてきたら、移動先のURLに速攻で飛ばします。URL移転の際に、過去のアクセスを引き継ぐ一番良いと言われている方法です。

今回の場合なら、

Redirect permanent /sb/log/eid858.html http://prius.cc/d/20090312_heisei20nembunnokakuteishinkok.html
Redirect permanent /sb/log/eid857.html  http://prius.cc/d/20090311_union_bindgin_forceotsukattemi.html
Redirect permanent /sb/log/eid856.html  http://prius.cc/d/20090310_choukoii.html

Redirect permanent /sb/log/eid3.html http://prius.cc/d/20040422_tanjunnanamaedana_internet2.html Redirect permanent /sb/log/eid2.html http://prius.cc/d/20040415_bokobokoboko.html Redirect permanent /sb/log/eid1.html http://prius.cc/d/20040414_torakkubakkuyattemimashita.html Redirect permanent /sb/log/eid0.html http://prius.cc/d/20040412_akuachitannekku_fuaiten.html

と延々書いて行けばOKです

※参考URL

個別記事htmlを作成していない場合

しかし個別記事htmlを作成せず、sb.cgi + パラメータでアクセスしている場合この方法は使えません。なぜなら

Redirect permanent /sb/sb.cgi?eid=858 http://prius.cc/d/20090312_heisei20nembunnokakuteishinkok.html
Redirect permanent /sb/sb.cgi?eid=857  http://prius.cc/d/20090311_union_bindgin_forceotsukattemi.html
Redirect permanent /sb/sb.cgi?eid=856  http://prius.cc/d/20090310_choukoii.html

Redirect permanent /sb/sb.cgi?eid=3 http://prius.cc/d/20040422_tanjunnanamaedana_internet2.html Redirect permanent /sb/sb.cgi?eid=2 http://prius.cc/d/20040415_bokobokoboko.html Redirect permanent /sb/sb.cgi?eid=1 http://prius.cc/d/20040414_torakkubakkuyattemimashita.html Redirect permanent /sb/sb.cgi?eid=0 http://prius.cc/d/20040412_akuachitannekku_fuaiten.html

と.htaccessに記載した場合、「?」以降は移転先のURLのパラメータとして処理されます。つまり実質下記のようになってしまいます。

Redirect permanent /sb/sb.cgi http://prius.cc/d/20090312_heisei20nembunnokakuteishinkok.html?eid=858
Redirect permanent /sb/sb.cgi http://prius.cc/d/20090311_union_bindgin_forceotsukattemi.html?eid=857
Redirect permanent /sb/sb.cgi http://prius.cc/d/20090310_choukoii.html?eid=856

Redirect permanent /sb/sb.cgi http://prius.cc/d/20040422_tanjunnanamaedana_internet2.html?eid=3 Redirect permanent /sb/sb.cgi http://prius.cc/d/20040415_bokobokoboko.html?eid=2 Redirect permanent /sb/sb.cgi http://prius.cc/d/20040414_torakkubakkuyattemimashita.html?eid=1 Redirect permanent /sb/sb.cgi http://prius.cc/d/20040412_akuachitannekku_fuaiten.html?eid=0

対処方法

まずこういう.htaccessを作ります。

DirectoryIndex sb.cgi
RewriteEngine on
RewriteBase /sb
RewriteRule sb.cgi http://prius.cc/d/temp/ [R=301,L]
RewriteRule log\/index.rdf http://prius.cc/d/feed/ [R=301,L]
RewriteRule log\/atom.xml http://prius.cc/d/feed/ [R=301,L]

これで「http://prius.sakura.ne.jp/sb/sb.cgi?eid=858」へのアクセスは、「http://prius.cc/d/temp/?eid=858」へのアクセスになります。なお、最後の2行でRSSのリダイレクトを行っています。RSSはファイルへのアクセスなのでこれでリダイレクト完了です。

※Redirect parmanentでもできるかもしれませんが、僕がやった時は上手くいきませんでした。RewriteRuleBase、RewriteRuleについては、以下のURLを参考にしてください。

meta refreshを使う

では「http://prius.cc/d/temp/?eid=858」へのアクセスを「http://prius.cc/d/20090312_heisei20nembunnokakuteishinkok.html」に飛ばしてやれば良い。これにはmeta refreshを使います。

301リダイレクトが使えないときの転送方法 ≫ 海外SEO情報ブログ・メルマガ

具体的には「http://prius.cc/d/temp/?eid=858」にアクセスがあると以下のようなHTMLを出力するようなcgiを作ります。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head></p>

<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>

<script type="text/javascript">
_uacct = "UA-72342-1";
urchinTracker();
</script>

<p><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta HTTP-EQUIV="Refresh" CONTENT="0; URL=http://prius.cc/d/20090312_heisei20nembunnokakuteishinkok.html">
<title>index.html</title>
</head>
<body>
</html>

…これはまぁ、実際のファイルをダウンロードして見て見て下さい。個別エントリ・プロフィール・カテゴリ・年月へのアクセスを、新URLに飛ばしています。プログラムを知らない人でも雰囲気はつかめると思います。

cgiファイルのダウンロードはこちら。

以上でリダイレクトの説明は終わりです。

次→実際の移行レポートとその後

Web拍手/はてブ/Tweetボタン

下のボタンを押すと拍手を送ることができます。同時にメッセージも送れます。

はてブはこちら。このエントリーを含むはてなブックマークはてなブックマーク - 旧ブログ(sb)→新ブログ(WordPress)へのリダイレクト設定

WordPressにSereneBachからエクスポートしたデータをインポート

目次

  1. 旧ブログのアクセスを引き継ぎつつ、個別記事ページを生成していないSereneBach(sb)からWordPressへ移行する方法(このエントリ)
  2. 新ブログのパーマリンク作成(投稿名ベース)
  3. 旧ブログ→新ブログへのパーマリンク対応作成
  4. SereneBachからエクスポートしたデータを編集
  5. WordPressにSereneBachからエクスポートしたデータをインポート←今ここ
  6. 旧ブログ(sb)→新ブログ(WordPress)へのリダイレクト設定
  7. 実際の移行レポートとその後

エクスポートしたデータの編集が終わったので、インポート→postnameの編集を行います。

インポート!

WPの管理画面から「インポート」→「Movable Type もしくは Typepad のインポート」を選択し、編集したテキストを指定してアップロードします。

WP側の個別ファイル名(postname)リネーム

固定リンクを変えずにスムーズにMovableTypeからWordPressに移行するまでの作業ログ – IDEA*IDEA ~ 百式管理人のライフハックブログ ~の「マッピング用のSQLを作る」を参考に、post_nameの変更を行います。

なお仮にインポートに失敗しても、SQLから以下の5つのテーブルを消せば元に戻ってやりなおせます。

  • wp_comments
  • wp_posts
  • wp_terms
  • wp_term_relationships
  • wp_term_taxonomy

トラックバックを許可する(SQL使用)

※これはお好みで。

[ WordPress ] 過去ログのトラックバック・コメントを一括で許可する方法 – WordPress 研究室を参考に、全てのエントリのトラックバック設定をONにします。

次→旧ブログ(sb)→新ブログ(WordPress)へのリダイレクト設定

Web拍手/はてブ/Tweetボタン

下のボタンを押すと拍手を送ることができます。同時にメッセージも送れます。

はてブはこちら。このエントリーを含むはてなブックマークはてなブックマーク - WordPressにSereneBachからエクスポートしたデータをインポート

SereneBachからエクスポートしたデータを編集

目次

  1. 旧ブログのアクセスを引き継ぎつつ、個別記事ページを生成していないSereneBach(sb)からWordPressへ移行する方法(このエントリ)
  2. 新ブログのパーマリンク作成(投稿名ベース)
  3. 旧ブログ→新ブログへのパーマリンク対応作成
  4. SereneBachからエクスポートしたデータを編集←今ここ
  5. WordPressにSereneBachからエクスポートしたデータをインポート
  6. 旧ブログ(sb)→新ブログ(WordPress)へのリダイレクト設定
  7. 実際の移行レポートとその後

※後々旧ブログのURLは全て新ブログにリダイレクトされるので、この作業は必須ではありません。面倒な人は飛ばして次の項目へどうぞ。

旧ブログのエントリー中で、自ブログのエントリにリンクを張ってたりTOPページにリンクを張ってたりするのを置き換えます。なお置き換えする場合は1→2→3の順番を守って置き換えてください。

1.エントリ中のsbへのリンクリネーム

Speeeeedというソフトを使って置換します。Speeeeedには置換リストと言う定義ファイルを利用して、多→多の置換が可能です。Speeeeedをダウンロードしたフォルダにreplace.lstというファイルを作成し、タブ区切りで置換前の文字列、置換後の文字列と記載します。

http://prius.sakura.ne.jp/sb/sb.cgi?eid=858  http://prius.cc/d/20090312_heisei20nembunnokakuteishinkok.html

注意点は置き換えリスト(replace.lst)にはeidの大きい順に書いていく事。上から順に照合していくので、最初にeid=1と書いたらeid=10やeid=123にも一致しておかしく変換されてしまいます。

2.画像パスのリネーム

画像の保存場所を変更する場合はリンクを変更します。僕の場合は

置換前:http://prius.sakura.ne.jp/sb/img
置換後:http://prius.cc/d/wp-content/sb-img

としました。

3.TOPへのURLリネーム

最後に旧ブログのTOPページのURLを新ブログのURLに置き換えます。テキストエディタでエクスポートしたデータを開いて

置換前:http://prius.sakura.ne.jp/sb/
置換後:http://prius.cc/d/

でOK。

余談:ここで問題発生!

僕固有の問題かもしれませんが、この後WordPressにインポートしたら続きエリアに文章を書いてないエントリにも「続きを読む」が表示されちゃってました。これはSereneBachからエクスポートしたデータのEXTENDED BODYエリアに

<ul class="footnote">

という文字列が入っていたのが原因でした。よって以下の条件で置換を行い、EXTENDED BODYに

<ul class="footnote">

しか書かれてないものを消去しました。

置換前:^<ul class="footnote">
置換後:

次→WordPressにSereneBachからエクスポートしたデータをインポート

Web拍手/はてブ/Tweetボタン

下のボタンを押すと拍手を送ることができます。同時にメッセージも送れます。

はてブはこちら。このエントリーを含むはてなブックマークはてなブックマーク - SereneBachからエクスポートしたデータを編集

旧ブログ→新ブログへのパーマリンク対応作成

目次

  1. 旧ブログのアクセスを引き継ぎつつ、個別記事ページを生成していないSereneBach(sb)からWordPressへ移行する方法(このエントリ)
  2. 新ブログのパーマリンク作成(投稿名ベース)
  3. 旧ブログ→新ブログへのパーマリンク対応作成←今ここ
  4. SereneBachからエクスポートしたデータを編集
  5. WordPressにSereneBachからエクスポートしたデータをインポート
  6. 旧ブログ(sb)→新ブログ(WordPress)へのリダイレクト設定
  7. 実際の移行レポートとその後

では、旧ブログと新ブログのパーマリンクを対応させていきます。

対応関係作成

FTPソフトを起動して、旧ブログ(sb)にアクセス。sb/data/entry以下のファイルを全てダウンロードして1つのフォルダ(例えばD:\blog)に保存します。次にコマンドプロンプトを起動して

cd /d "D:\blog\"
copy *.cgi marge.txt

と入力すると、D:\blog\marge.txtに全てのエントリ内容が出力されます。このファイルをExcelで開く…と文字化けするので、まずはサクラエディタで開いて「ファイル→開き直す→SJISで開き直す」としてから保存。その後Excelで開きます。A列がeid、C列がタイトルとなっています。

これで前回の記事でpost_titleを置換したエクセルと合わせると…

  • 新ブログの記事ID
  • 新ブログの記事タイトル
  • 新ブログのパーマリンク(予定)
  • 旧ブログの記事タイトル
  • 旧ブログのパーマリンク

の5つの要素が出揃いました。旧ブログの記事タイトル=新ブログの記事タイトルなので旧ブログのパーマリンクと新ブログのパーマリンク・記事IDを紐付けることができます。

あとはこんな感じの表を作って地道に紐付けを行います(それかプログラムを作る)。

・表1

記事IDWPの記事タイトルwpのURLsbの記事タイトルsbのURL判定
677ブログhttp://prius.cc/d/20080212_buro.html神立高原レポhttp://prius.sakura.ne.jp/sb/sb.cgi?eid=698NG
678ヤナバスキー場http://prius.cc/d/20080212_yanaba.htmlヤナバスキー場http://prius.sakura.ne.jp/sb/sb.cgi?eid=697OK
679神立高原レポhttp://prius.cc/d/20080213_blog.htmlブログhttp://prius.sakura.ne.jp/sb/sb.cgi?eid=694NG
680尾瀬戸倉http://prius.cc/d/20080213_ozet.html尾瀬戸倉http://prius.sakura.ne.jp/sb/sb.cgi?eid=699OK
6812008シーズンhttp://prius.cc/d/20080214_season.html2008シーズンhttp://prius.sakura.ne.jp/sb/sb.cgi?eid=700OK

F列は「=IF(D2=I2,”OK”,”NG”)」って関数が入ってます。

これは手作業でやると結構時間かかると思います。ほとんどのエントリの投稿順番と記事IDが一致してるって人は楽だと思いますが…。

余談:ExcelのVLOOKUPは使えない?

ExcelにVLOOKUP(参考)を使って対応を作ろうと思いましたが、どうやら日本語が含まれていると上手く拾ってくれないようで。英文字ならOKかと思って前エントリで紹介したヘボン式パンチを使ったけどこっちもだめ。タイトルを数字に変換する方法があればVLOOKUPを使えると思うのですが…。

次→SereneBachからエクスポートしたデータを編集

Web拍手/はてブ/Tweetボタン

下のボタンを押すと拍手を送ることができます。同時にメッセージも送れます。

はてブはこちら。このエントリーを含むはてなブックマークはてなブックマーク - 旧ブログ→新ブログへのパーマリンク対応作成

新ブログのパーマリンク作成(投稿名ベース)

目次

  1. 旧ブログのアクセスを引き継ぎつつ、個別記事ページを生成していないSereneBach(sb)からWordPressへ移行する方法(このエントリ)
  2. 新ブログのパーマリンク作成(投稿名ベース)←今ここ
  3. 旧ブログ→新ブログへのパーマリンク対応作成
  4. SereneBachからエクスポートしたデータを編集
  5. WordPressにSereneBachからエクスポートしたデータをインポート
  6. 旧ブログ(sb)→新ブログ(WordPress)へのリダイレクト設定
  7. 実際の移行レポートとその後

それでは新ブログのパーマリンクを投稿名にするという前提でパーマリンク作成にかかります。

既存エントリーの投稿名作成

既存エントリーをWordPressに取り込むと、記事タイトル(日本語)がそのまま投稿名になるのでアルファベット(ローマ字)に変更しなければいけません。といっても全部手作業で変更するのは大変すぎるので、自動で変更する手順を説明します。

  1. とりあえずSereneBachからMT形式でエクスポートしたデータをWordPressに取り込む
  2. WordPressに取り込んだデータを取り出す

これはWordPressに取り込まれた順番に記事データを取り出したいからです。日付とタイトルを取り出したいのでSQLを使います。さくらインターネットなら「さくらインターネットコントロールパネル」→「データベースの設定」よりphpMyAdminにログイン。左カラムよりデータベース名を選択して、「wp_posts」テーブルを選択。「エクスポート」タブよりExcel形式でデータを全てダウンロードします。ダウンロード前に「1 行目にフィールド名を追加する」にチェックを入れると分かりやすいです。ダウンロードしたデータを開きpost_title列とpost_date列を確認します。

日本語の記事タイトルを英語の投稿名に変換

窓の杜 – 【NEWS】漢字を含む日本語テキストをローマ字テキストに変換「ヘボン式パンチ」をダウンロードして、post_title列をローマ字に置換します。

置換前置換後
自分の車の走行距離内訳JIBUNNOKURUMANOSOUKOUKYORIUCHIWAKE
外国でモノを買って個人輸入すると儲かるという話を考察。
GAIKOKUDEMONOOKATTEKOJINYUNYUUSURUTOMOUKARUTOIUHANASHIOKOUSATSU.
岩手の食と観光の魅力”懇親会に行ってきた。“IWATENOSHOKUTOKANKOUNOMIRYOKU”KONSHINKAINIOKONATTEKITA.
新しいデジカメがほしくなったATARASHIIDEJIKAMEGAHOSHIKUNATTA

ここからは正規表現の使えるテキストエディタを使います。持ってない人はサクラエディタをダウンロードしてください。

URLに適さない文字を削除

「.」や「”」はURLに適さないので削除します。その他、URLに使用できない文字は削除します。よく分からなければA~Z、1~9以外の文字を削除するといいでしょう。正規表現を使えば一瞬です。サクラエディタの場合、Ctrl+Rで置換画面を呼び出し以下のルールで置換します。

regexp1

置換前:[^(\w|\d|\r|\n)]
置換後:

置換した後の文字列は新しいエクセルを開いてA列にコピーします。

YYYYMMDDの日付追加

post_date列には「2009-01-18 01:05:11」のようなデータが入っているので、これも正規表現で置換します。ハイフンとスペース以下を削除します。

regexp2

置換前:(-| .*)
置換後:

左かっこ、ハイフン、縦棒、半角スペース、ドット、アスタリスク、右かっこです。

置換した後の文字列はさっきのエクセルのB列にコピーします。

結合

A列とB列をサクラエディタにコピーしてタブをアンダーバーに置換します。

置換前:t
置換後:_

これで完成です。出来上がった文字列はダウンロードしたエクセルのpost_title列に上書き(or隣に一列追加してペースト)してしまいましょう。

URLが長すぎる?

この作業は必須ではありません。URLが長すぎるとウザいので、40文字以上の文字をカットします。

置換前:^(.{0,40}).*
置換後:$1

で、カットすると同じURLができる可能性があるので名前が重複していないか確認します。サクラエディタの場合、文章全体を選択してAlt+Aでソート→Alt+Mで重複行の削除ができます。つまり重複行の削除ができる→重複している行があるということ。ただ実際に重複していた場合どこか分からないので、目で見るorプログラムを書いて調べる必要がありますが(汗


新ブログのパーマリンク作成(投稿番号ベース)

投稿番号ベースでパーマリンクを作成する場合、SQLを使用してエクスポートするだけでOKです。

  1. SereneBachからエクスポートしたデータをWordPressに取り込む
  2. WordPressに取り込んだデータを取り出す

さくらインターネットコントロールパネル」→「データベースの設定」よりphpMyAdminにログイン。左カラムよりデータベース名を選択して、「wp_posts」テーブルを選択。「エクスポート」タブよりExcel形式でデータを全てダウンロードします。ダウンロード前に「1 行目にフィールド名を追加する」にチェックを入れると分かりやすいです。T列:GUID列がパーマリンクになるはずです。

次へ進む→旧ブログ→新ブログへのパーマリンク対応作成

Web拍手/はてブ/Tweetボタン

下のボタンを押すと拍手を送ることができます。同時にメッセージも送れます。

はてブはこちら。このエントリーを含むはてなブックマークはてなブックマーク - 新ブログのパーマリンク作成(投稿名ベース)

ホーム > ウェブ

Feeds
Meta

Return to page top