ココログ(TypePad)からWordPress3.3への移行

元サイトにかなりのアクセスがあり、パーマリンクを維持したまま 移行する方法をWebで捜したが、TypePad側の制約が多く決め手がなかった。そこで、2012年1月時点での カレントベストプラクティスをメモしておく。課題は以下の3つ。

  1. WordPress標準TypePad Importerが不出来
  2. 自分の投稿から旧ブログ内へのリンクが切れる
  3. 外部から旧ブログ内へのリンクが切れる

以下、年末試行錯誤した成果?です。

1. WordPress標準TypePad Importerが不出来

標準のTypePad importerを使うと、投稿URL(post_name)やCSSのクラス名が破棄される為、WordPressプラグイン「Search Regex」(正規表現による置換)を導入。処理できないpost_name(投稿名/別名ページスラッグ)は、WordPressのデータベースを叩く。

作業後に、スマートな方法を見つけたのでリンク。この方法は、post_nameもいけると思うし、SQLが嫌いな人に推奨。

2.自分の投稿から旧ブログ内へのリンクが切れる

ブログ内の画像を一括ダウンロードするツールも見つけたが、そういうツールは確実性がなく、信用/使用しない主義?だ。
ココログからの画像回収は、「マイフォト」を表示。数が多い場合、URLにlimitを勝手に追加。確かココログ内サポートフォーラム?にあった方法。
~cocolog/t/app/gallery/manage?__mode=photos&set_id=xxxxxx&limit=100

Webページのソースを表示、以下のような画像リンクを含むhtmlが手に入る
~/photos/uncategorized/2011/10/29/img_20111029_222835_2-thumb.jpg

テキストエディタで正規表現を使って「-thumb」(サムネイル)を削除。 IrivineなどのダウンローダにURLリストを放り込む。画像が回収できたら、WordPress側の「メディア」としてアップロード。 投稿側のリンクは「Search Regex」で一発。元あった階層構造は維持しない方が良いと思う。

3. 外部から旧ブログ内へのリンクが切れる

WordPress側のURLは、TypePad側にあわせた以下。日別アーカイブの場合、別構造になる点に注意。

/%year%/%monthnum%/%postname%/

ここの%postname%に日本語が混ざる。 ページスラッグの編集で1つ1つ直せるが、WordPressの仕様を回避する為(旧スラッグも有効リンク)、MySQL内のDB、post_name行を直接弄る。以下のモジュールテンプレートを作成し、TypePadでのパーマリンクをCSV出力てチェック。

<MTEntries lastn=”9999″> <$MTEntryDate  language=”en” format=”%m/%d/%Y %I:%M:%S %p”$>,<$MTEntryTitle strip_linefeeds=”1″$>, <$MTEntryPermalink extract_file=’1’$> </MTEntries>

維持に問題がなければ、後はWordPress側のDBを叩くSQL(UPDATE文)を、テキスト置換作業でまとめて生成。SQLは、My PHP Adminを使ってSQLを貼り付け。

やっとドメインの移転が出来る。以下のいずれか。

  • TypePad側でmod_rewriteや.htaccess。301リダイレクト
  • TypePad側でメタタグ(meta http-equiv=”refresh”)による0秒リダイレクト

ココログは上級テンプレートを使った後者かつMTタグのEntryBaseNameが利用出来ない為、html拡張子つきのURLで転送。転送先で拡張子htmlを取り除く為、WordPressをインストールしたディレクトリにある.htaccessにrewriteルールを追加。記載場所はココ。

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ – [L]
RewriteRule (^subdir_name/[0-9]+/[0-9]+/.*)\.html$ $1/ [R=301,L]
RewriteRule ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

TypePad側のファイルのうち、URLの最後がハイフンで終わる記事等とか怪しいが、そのrewriteは止めておく。

以上で作業完了。

Leave a Reply

Be the First to Comment!

Notify of
avatar
wpDiscuz