以前作って廃止した仕事用サイト、もしかしたら再就職活動の足し(例: 経歴に書く時の元ネタ、Webやアプリのサンプル)に使えるかと思ってちょっと見たくなったのだが、なかなか問屋が卸してくれなかった。WordPressでは画像などの添付ファイル以外のコンテンツはDBに入っているので、HTMLのようにブラウザで簡単には開けないのだ。そこで、一式を手元のデスクトップPCに移して、最小限でもいいから表示できるようにしようとした。

実は、サイトが生きていた時には定期的にPDFで保存していたのだが、(良くあるパターンで、)欲しいところを取ってなかったのでw、この作業をする羽目になった。

要は、WordPressのサーバ移行にからむ作業である。最初から面倒なことは分かっていたが、やる気(時間)はあった。

いろいろな作業が要るが、一番面倒なのは、文中の自サイト(自サーバ)へのリンクや画像のURLを書き換えることである。それらは大抵絶対パスのように格納されていて(例: "https://blog.piulento.net/archives/94939")、例えば新しいサーバのドメイン名やポート番号が違っていたら、問答無用で無効になってしまう。そして、WordPressは何も対処してくれない(何が正しいか分からないので、不可能だ)。

おそらく、自サイトへのリンクを付ける時に、ドメイン名などを外して相対パスのように(例: "/archives/94939")すればいいのだが、そういうサポートがないので、すぐに忘れてしまう。更に、画像のリンクは自動で付くので無理だ。

対処にはいくつかの方法があるが、コンテンツ(DB)を書き換える方法と、表示時に書き換える方法があるだろう。前者はまあ簡単だろう(置換するプラグインがあるだろうし、インポート機能でできるのかも知れない)が、移転のたびに手間が掛かるうえに、そのうちおかしくなってしまう(しかも、気付かない)可能性がある。そこで、僕は後者の、コンテンツやDBはそのままにして、表示時に変換する方式(オンザフライ)で対処したいと思った。

今気付いたが、コンテンツ中のローカルURLを相対パスのように置換すれば、オンザフライでの変換も不要になっていいかも知れない。ただ、上にも書いたように、WordPressにはそういうサポートがないので、投稿が増えるたびにそういう処理が要るだろう。

このサーバでは、(別な「小手先対処」のために)URLの書き換えをRewriteというプラグインでしているので、今回もそれが使えると思ったのだが、URL中のパスの部分だけしか変換できないようで(サーバからWordPressに来る時にそうなってしまうのか)、ポート番号は変更できかった。それで他を探したら、Real-Time Find and Replaceでできた。

なお、Rewriteは古過ぎるせいか、最新のWordPressではエラーになったので、修正が必要だった(今まで知らずに使えていたので、設定だけの問題かも知れない)。ご入用の方はお知らせ下さい。

今回は、ドメイン名は変えずに(ドメインは廃止するので、ホストテーブル(/etc/hosts)に書いて誤魔化すことにした)、スキーム("https"を"http"に)とポート番号(下例では80を9999に)を変えたので、以下のようなルールで変換するようにした。

元: @(http)(s)?:(//AAAA\.BBB)(/blog)(/.*)?@
置換後: $1:$3:9999$4$5

見ても「は??」であろうが、正規表現というもので、ワイルドカードの千倍以上便利だw 上で、"AAAA\.BBB"は元のドメイン名("AAAA.BBB")、"9999"は新しいポート番号である。例えば、元々のURL: "https://AAAA.BBB/blog/94939"(httpsはhttpでも可)は"http://AAAA.BBB:9999/blog/94939"に変換される。

なお、公開サイトで使うなどの場合のように「ちゃんと」(完全に)変換するにはいろいろな例外条件への配慮が要るが、今回は自分で見るだけなので、手を抜いた。

 

(7/31 21:40 一部の誤りを取り消し, 8/1 15:31 補足・修正)

  •  0
  •  1

4件のコメント

  1. naoki:

    ポートフォリオというやつですね。
    (↑最近覚えました)

    ブログ移転するという意味ではないんですが、
    こういう事ができるようになりたいです。憧れます。

    でも、上記の半分(それ以上)
    僕には意味が分からなかったんですが
    それは自分でググったり、
    お会いするときに伺うとして(←冗談です)、
    興味あることだったので
    読んでいてワクワクしました。

    •  0
    •  1
  2. れんと:

    ●あ、自分のサンプルとか作例でしたら、ポートフォリオだったかも知れません。なんかもう一個あった気がするのですが、それがポートフォリオだったかも知れません。なぜか今は出て来ませんw

    サーバ移転は、(僕も含めて)いつかするかも知れませんので、あらかじめ試しておくといいと思いました。やっぱり面倒でしたがw そういえば、なおきさんがここに来られた時、上記のように書き換えされたんでしょうかね。結構面倒なのに、されたんだっけと思いました。自動ではないはずなので・・・

    そう、この投稿はすごく端折ってますから(前提条件とか省いてますし、作業全体の半分くらいしか書いてないです)、分からないことは多いと思います。もし会ったら、かつ、僕が調子良ければw、いくらでもお教えしますよ。

    •  0
    •  0
  3. naoki:

    ありがとうございます。

    その節は大変お世話になりました〜。(なってます)
    平身低頭です。 m(_ _)m

    URLは、れんとさんが書き換えして下さった記憶があります。
    イメージとしては
    「勉強になるので」と、書き換えや設置、
    テスト(?)は全て、れんとさんが行って下さり、
    「作業できました。あとはパスワード変更して下さい」で
    僕はほぼ手ぶらで入居した感じでした。

    今は僕もスタミナ切れが甚だしいです。
    きっといつか回復してやろうと思います。

    •  0
    •  0
  4. れんと:

    ●あれ、僕がやりましたかw すっかり記憶喪失です(爆) 仕事とかでも結構そういうことがあるので、なかなか自分も馬鹿にできません(危ないって!!)w

    スタミナはなかなかだと思いますが、気長に溜め・貯めて下さい。

    •  0
    •  1

コメントを書く / Write a comment

名前 / Name    

メール / Mail 

URL