2011年06月05日

WordPressの小さな発見。

今回の引っ越しに当たって、新ブログへ旧ブログからお知らせリンクを一定の期間だけでもはっておこうと思った。せっかく旧ブログにたくさんの人が訪れてくれているのに(1日平均700人ぐらいのユニークユーザーが来てくれるらしい)、いきなりNotFoundでは申し訳ないと思ったわけだ。

もっとも、このあたり、本当は心配することはないのかもしれない。というのも、近頃の検索エンジンは優秀なので、1ヶ月もすれば新しいブログの記事のほうが上位に来て、やがて旧ブログは検索結果から消えてしまう。主力が検索エンジン経由のユーザーだから、放っておいても全く問題はない、とも言えるわけだ。

けれど、5年もやっていると、過去に頂いたリンクの数はけっこう少なくはない。そういうリンクを辿ってくる人には、やっぱりNotFoundが表示されるわけで、そう思えばわずかの期間でもお知らせはあげておきたい気もする。

ここで問題になるのが、旧サーバーの問題でWordPressのデータのエクスポートができなくなっている件。本来ならデータをエクスポートしておいて内容を書き換え、再インポートで上書きすれば一気に内容が更新されるのだと思う。それができない。

気長にやるかと思っていくつかの記事を書き換えたが、手間を思うとあまりに馬鹿馬鹿しくてやっていられない。そこでふと思った。いっそ、「お知らせ」の内容を記載したhtmlファイルをつくってアップロードしたらどうだろうかと。

旧ブログはブログエンジンとしてWordPressをサーバーにアップロードしているのだが、ご存じのようにWordPressは動的なコンテンツ管理システムで、実際にファイルが存在するわけではない。コンテンツはデータベースの中に保存されていて、リクエストに応じてそのデータベースから必要な情報を引っ張り出し、HTMLの形式で出力する。たとえば旧ブログのこの記事は/ubuntu/archives/480.htmlというアドレスにあるわけだが、実際には/archivesというディレクトリも480.htmlというファイルもサーバー上には存在しない。ただ、サーバーに対してそういうリクエストがあると、WordPressが反応して、リクエストに対応するファイルをデータベースから瞬時に生成して出力する。まあ凄いもんだと思うが、ある意味、詐欺のような気がしないでもない。実体はないのに、あたかも存在するように見せかけるのがダイナミックなCMSというわけだ。

ならば、現実に/ubuntu/archivesというディレクトリをつくり、そこに480.htmlというファイルを置いたらどうなるか。やってみると、これが面白いことに、その実体のファイルが優先される。このときWordPressのデータが特に影響を受けるとか干渉するというようなこともないようだ。そして、480.htmlのコンテンツ自体はデータベースから消えないので、たとえば過去記事の一覧なんかにはちゃんと反映される。そこから個別の記事へのリンクをたどっていくと、実体ファイルのほうが表示される。

ということは、以前に引っ越しのためにダウンロード済みの個別のHTMLの本文を、1つ前の記事に書いたようにBluefishを使った正規表現の検索・置換で一括変換し、そのファイルをサーバー上の/ubuntu/archivesというディレクトリにアップロードしてやれば、一瞬で引っ越し案内が掲載されることになる。この方法のいいところは、個別の記事に対してはられたリンクを辿ってくるビジターに対して確実に表示される一方で、ブログのトップページや過去記事の一覧ページにはほとんど影響がないということだ。旧ブログの価値をあまり損なわずに、新ブログへの以降を促進できる。時間をかけた引っ越しには、これはいいかもしれない。

今回の引っ越しで、少なくともこれからしばらくの間は、WordPressを使うことはなくなるだろう。ただ、この方法はいろいろ応用できそうな気がする。CMS上の統一的なデータをいじらずに個別のいくつかのページだけ表示を変えたいというようなケースがそれだ。そういう場合は、そのページのアドレスに対応した実体のファイルを作成してアップロードしておけば、それがCMSの出力に優先して表示される。「詐欺のような」と書いたが、詐欺師の上前をはねるようなトリッキーな方法かもしれない。
posted by 松本 at 12:03| Comment(0) | TrackBack(0) | 総記・雑記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック