Dec 25, 2009
PHPを使った「 301 Redirect 」の設定
Blogを統合する際、旧Blogから全ログを新Blogに引き継いだため、旧Blogは閉鎖して新Blogに 301 Redirect させることにしました。単純にindex.phpへのアクセスをRedirectさせるだけなら、.htaccessを使って次のようにRedirectさせれば良いだけです。
Redirect permanent /index.php http://新URI/index.php
または、
Redirect permanent / http://新URI/
ところが、今回は単純なURI移動ではなくて2つのBlogを1つにまとめており、しかも両Blogのログを時系列に並べ替えています。したがって、旧Blogの各記事への直接リンクは、.htaccessでの設定では適切にRedirectさせることができませんでした。いろいろ調べたのですが、上手い方法が見つからなかったので、最終的にはXREAのユーザー掲示板で教えを乞い、PHPを使ったRedirect設定を使うことにしました。
PHPを使った 301 Redirect
ネタ元とゆーか、教えていただいたXREAユーザー掲示板の該当スレッドはこちらです。shimix様、有益な方法を教えていただいて有り難うございました。
具体的には、次のようなPHPファイルを作成し、P_BLOGの場合はarticle.php、Loggixの場合はindex.phpと差し替えます。 “newid”の*の部分を新Blogで対応する記事番号にしていけば良いわけです。
<?php $id = $_GET['id']; if ($id == '1') { $newid = '*'; } if ($id == '2') { $newid = '*'; } if ($id == '3') { $newid = '*'; } : : header( 'HTTP/1.1 301 Moved Permanently' ); header( 'location: http://new.example.com/index.php?id='. $newid ); ?>
記事数が多いといささか大変ですが、不規則な記事idへ301ステータス付きでRedirectできるのが素晴らしいところです。
なお、Loggixの方はこれだけでOKですが、P_BLOGの方はindex.phpへのリンクやcategory.php、search.phpへのリンクも考えられるので、これらを新Blogのindex.phpへRedirectさせるように.htaccessでの Redirect permanent も併用すると良いでしょう。
以上
Dec 24, 2009
Blog統合しました。
今までネタ別に2つに分けていたBlogを1つに統合しました。統合したのは以下の2つです。
-
Ganesha's monologue
P_BLOGをXREAのS102鯖で動かして運用していました。
元々は私が初めて始めたBlogでしたが、まず「家族に知られたくない内緒のネタ」を別Blogに分離し、「蝶関係のネタ」をさらに別Blogに分離したところ、書くネタが無くなって最近は更新が滞るようになっていました。そこで、最初に分離した「家族に内緒のネタ」を再統合することにしました。
なお、今回の統合で永くお世話になったP_BLOGともお別れです。有り難う。 -
Ganesha's lab.
LoggixをXREAのS370鯖にて、データベースはSQLite2で動かして運用していました。
上の Ganesha's monologue から最初に分離させた「家族に内緒のネタ」すなわち物欲・散財関係のネタ用に運用していましたが、それほど頻繁に書くネタがあるわけでもないので元鞘に戻すことにしました。「家族に内緒」の部分は全家族PCのhostsファイルを編集してアクセス制限をかけることで対処しました。(悪知恵)
なお、統合後の新Blogも同じLoggix運用ですが、せっかくなので新規インストールしてデータベースをSQLite3にバージョンアップさせることにしました。
新Blogのタイトルは、Ganesha's monolog. としました。P_BLOGで運用していたほうの「monologue」を引き継ぎつつ、「monolog.」と微妙に変更しています。
「蝶関係のネタ」を扱う Ganesha's Field Notebook. はこれまで通り並行運用を続けるので、今後はBlog2本立てということになります。
統合にあたって、過去ログはすべて時系列に並べ替えて新Blogに移しました。そのため、データベース変換等の手段を使えず、1件1件コピペで移したので、移行にえらく時間がかかりました。(疲れた)
過去ログへのリンクはすべて301ステータス付でRedirectさせていますので、ただでさえ少ないページビューがさらに落ち込むことはないはずです。(そう信じたい)
Redirectを設定する際にちょっとした工夫をしたので、次回エントリではそのへんのTipsを採り上げる予定です。
Loggix 最新版にバグがあったので、修正。今度のも動作には問題ないが、修正しないと各個別記事(index.php?id=XXXの時)ではThe W3C Markup Validation Serviceでvalidが貰えないどころか、Passedにもならない。
修正箇所はpost-form.htmlの6行目と7行目。なぜこんなところに<body></body>があるのか。
これで、とりあえずPassedがもらえるようになったが、まだValidではない。でもuser_emailの初期値は空欄にしとかないとダメだよね。だからこれで良いんだと思っている。