PR

geeklog から WordPress へ記事移動3(.htaccess編)

記事一覧から記事タイトルや日付をコピーする

pc.casey.jp » geeklog から WordPress へ記事移動2(インポート編) の続き。データはインポートされた。しかし、以前のサイトからの誘導と画像データのリンクが以前のサイトに貼られたままになっている。ここでは以前のサイトからの誘導を行う.htaccessを作成する。基本的な内容は pc.casey.jp » geeklogからWordPressへの引越し(.htaccessによる動的ページの高度な条件分岐!?) 等を参考にして欲しい。

スポンサードリンク

どこからどこにリンクするか

まず、WordPressには様々なパーマリンクが存在する。geeklogでの記事番号はWordPressには引き継がれなかった。だから記事番号は利用できない。

http://www.casey.jp/wp/testgeeklog/2009/11/04/sql%e3%82%af%e3%82%a8%e3%83%aa%e3%81%ae%e3%83%a1%e3%83%a2%ef%bc%88mysql%ef%bc%89%e3%83%a1%e3%83%b3%e3%83%86%e3%83%8a%e3%83%b3%e3%82%b9%e7%b3%bb/

上記のような形式であれば既存のgeeklogデータから何とかできそうだ。geeklogデータから投稿日の一覧と、記事タイトルを取得できればなんとかできるだろう。

記事一覧のコピーでデータを作成できるか

記事一覧から記事タイトルや日付をコピーする

記事一覧から記事タイトルや日付をコピーする

エディタへ貼りつけてみる

エディタへ貼りつけてみる

作成できなくはないけれど、ちょっと作ってみてこのデータでは面倒そうだと感じたので中止する。

作成できなくはないけれど、ちょっと作ってみてこのデータでは面倒そうだと感じたので中止する。

データ抽出のSQL

ということでSQLをphpMyAdminなどから発行してデータを取り出すことにする。

SELECT sid, date_format(date,'/wp/testgeeklog/%Y/%m/%d/'), title FROM `gl_stories` WHERE 1

こんな感じ。で、最終的に創りたい.htaccess用のデータは以下のとおり:

RewriteCond %{QUERY_STRING} 20091127034150115
 RewriteRule article.php https://pc.casey.jp/?p=249 [R=301,L]

ということなのでどの時点で固定文を入れるか迷うところだけれど、取り敢えずこの段階で埋め込んでしまおう。SQLでURLエンコードできなくもないけれど、面倒っぽいのでこの先で何か考えることにする。

SELECT 'RewriteCond %{QUERY_STRING}', sid, 'RewriteRule article.php', date_format(date,'http://www.casey.jp/wp/testgeeklog/%Y/%m/%d/'), title, '[R=301,L]' FROM `gl_stories` WHERE 1
SQLを発行して必要なデータを得る

SQLを発行して必要なデータを得る

抽出データをCSVデータとしてファイルに保存する

抽出データをCSVデータとしてファイルに保存する

URLエンコードが意外に面倒

まず 日本語URLをExcelで手軽にURLエンコードする方法 にある方法でサラっと変換できるかと思ったら、WordPressのURLとは違うようなので手を加える必要がありそう。何となくで大嫌いなVBAを使ってみる。

どのへんが違うかの例:

(記事タイトル)What’s CASEY.JP
(VBAエンコード)what’s%20casey.jp
(WordPress)whats-casey-jp

(記事タイトル)暴魔大戦1,001,304スコヴィル
(VBAエンコード)/%E6%9A%B4%E9%AD%94%E5%A4%A7%E6%88%A61%2C001%2C304%E3%82%B9%E3%82%B3%E3%83%B4%E3%82%A3%E3%83%AB
(WordPress)/%e6%9a%b4%e9%ad%94%e5%a4%a7%e6%88%a61001304%e3%82%b9%e3%82%b3%e3%83%b4%e3%82%a3%e3%83%ab/

まず、上記から読み取れるのは全てが小文字になって、「’」や「.」「,」が消されて、スペースがハイフンに置き換わっているということ。

(記事タイトル)/plugins/gus/functions.inc line 1253
(WordPress)/pluginsgusfunctions-inc-line-1253/

(記事タイトル)var/www/***/plugins/filemgmt/filemgmt.php
(WordPress)varwwwpluginsfilemgmtfilemgmt-php/

(記事タイトル)CGI::Application::Dispatch がインストールできない
(VBAエンコード)cgiapplicationdispatch-%E3%81%8C%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84
(WordPress)cgiapplicationdispatch-%e3%81%8c%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%a7%e3%81%8d%e3%81%aa%e3%81%84/

URLだからスラッシュや「*」「:」も加工されるけど、エンコードではなく削除されている。

(記事タイトル)Error: I need 262144 KiB, but dom0_min_mem is 262144 and shrinking to 262144 KiB would leave only 244672 KiB free.
(VBAエンコード)error-i-need-262144-kib-but-dom0_min_mem-is-262144-and-shrinking-to-262144-kib-would-leave-only-244672-kib-free-
(WordPress)error-i-need-262144-kib-but-dom0_min_mem-is-262144-and-shrinking-to-262144-kib-would-leave-only-244672-kib-free/

最後のハイフンは消される。

(WordPress)http://www.casey.jp/wp/testgeeklog/2009/06/16/alcohol-52/

%も消される。

(記事タイトル)ディスクイメージ作成・パーティション編集 ソフトウェア ? Backup & Recovery
(WordPress)/%e3%83%87%e3%82%a3%e3%82%b9%e3%82%af%e3%82%a4%e3%83%a1%e3%83%bc%e3%82%b8%e4%bd%9c%e6%88%90%e3%83%bb%e3%83%91%e3%83%bc%e3%83%86%e3%82%a3%e3%82%b7%e3%83%a7%e3%83%b3%e7%b7%a8%e9%9b%86-%e3%82%bd%e3%83%95/

日本語はエンコードされるが、長いもの(200バイトまで?)はカットされている・・・面倒なのでこれは放置でいいや。(.htaccessでの転送確認段階で個別修正しよう)

businessday.pl – ○日後の営業日を求める
businessday-pl—%E2%97%8B%E6%97%A5%E5%BE%8C%E3%81%AE%E5%96%B6%E6%A5%AD%E6%97%A5%E3%82%92%E6%B1%82%E3%82%81%E3%82%8B
businessday-pl-%E2%97%8B%E6%97%A5%E5%BE%8C%E3%81%AE%E5%96%B6%E6%A5%AD%E6%97%A5%E3%82%92%E6%B1%82%E3%82%81%E3%82%8B

ハイフンが連続するときは圧縮される。

※VBAエンコードは参考にしたURLに記載されているものと、改造版が混在している。

VBAでエンコードする(例)

' geeklog for wordpress, GPL, by CASEY.JP
Function urlEncode(str As String) As String

 Set re = CreateObject("VBScript.RegExp")

 ' str to lower
 str = StrConv(str, vbLowerCase)

 ' delete -------------------------------
 re.Pattern = "[\*',/:#%]"
 re.Global = ture
 str = re.Replace(str, "")

 ' replace ------------------------------
 str = Replace(str, " ", "-")
 str = Replace(str, ".", "-")

 ' -- to - ------------------------------
 'For i = 0 To 5
 '    str = Replace(str, "--", "-")
 'Next i
 re.Pattern = "--+"
 re.Global = ture
 str = re.Replace(str, "-")

 ' delete last char ----------------------
 re.Pattern = "-$"
 re.Global = False
 str = re.Replace(str, "")

 ' delete start char ---------------------
 re.Pattern = "^-"
 re.Global = False
 str = re.Replace(str, "")

 ' byte check
 '  for work!

 ' copy
 Set sc = CreateObject("ScriptControl")
 sc.Language = "Jscript"
 Set js = sc.CodeObject
 urlEncode = js.encodeURIComponent(str)
End Function

それっぽデータが作成できた

それっぽデータが作成できた

エディタで正規表現を使えば簡単にデータ加工ができる

エディタで正規表現を使えば簡単にデータ加工ができる

コメント