Tag : Loggix

7 - 9 of 30

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 も併用すると良いでしょう。

以上

Blog統合しました。

今までネタ別に2つに分けていたBlogを1つに統合しました。統合したのは以下の2つです。

  1. Ganesha's monologue
    P_BLOGをXREAのS102鯖で動かして運用していました。
    元々は私が初めて始めたBlogでしたが、まず「家族に知られたくない内緒のネタ」を別Blogに分離し、「蝶関係のネタ」をさらに別Blogに分離したところ、書くネタが無くなって最近は更新が滞るようになっていました。そこで、最初に分離した「家族に内緒のネタ」を再統合することにしました。
    なお、今回の統合で永くお世話になったP_BLOGともお別れです。有り難う。

  2. 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を採り上げる予定です。

/modules/calendar/theme/calendar.html の修正

旧Ganesha's Lab.(by SQLite2版Loggix)より移転転記。(2009-12-13)

Loggix 9.7.28の calendar.html 内にバグがあったので2箇所ほど修正。表面上は何の問題もないように見えるが、修正しないとThe W3C Markup Validation Servicevalidが貰えない。

まず修正したのは、calendar.html の4行目~10行目にまたがる<tl> ~ </tl> の部分。5行目の<th>に対応する</th>が無かったので、10行目の</tl>の前、9行目に</th>を追記した。

*修正後のコード(赤字部分が修正箇所)

<tr>
<th colspan="7" abbr="Year and Month">
<a href="<?php echo $item['calendar']['dir']?>/<?php echo $item['calendar']['target']?>.php?d=<?php echo $item['calendar']['prev_month']?>&ex=1" class="prev-month">« </a>  
<a href="<?php echo $item['calendar']['dir']?>/<?php echo $item['calendar']['target']?>.php?d=<?php echo $item['calendar']['this_month']?>&ex=1"><?php echo $item['calendar']['year_and_month']?></a> 
<a href="<?php echo $item['calendar']['dir']?>/<?php echo $item['calendar']['target']?>.php?d=<?php echo $item['calendar']['next_month']?>&ex=1" class="next-month"> »</a> 
</th>
</tr>

次に、calendar.html の26行目~34行目にまたがる <ul> ~ </ul> の部分。28行目の <ul> が26行目の <ul> の直接の子要素になってしまっている上に、33行目の </li> に対応する <li> が無い。これは、実は27行目の <li> ~ </li> の </li> が余分で、実際には27行目の <li> と33行目の </li> が対応するのだ。そう考えれば、28行目の <ul> はこの <li> ~ </li> の中に入るので、26行目の <ul> の直接の子要素にならない。

*修正後のコード(赤字部分が修正箇所)

<ul id="archives">
 <li><a id="more-archives">Archives</a></li>
  <ul id="arcvhies-by-year"> 
 <?php foreach($item['calendar']['month_array'] as $key => $value ): ?>
  <li><a href="<?php echo $item['calendar']['dir']?>/<?php echo $item['calendar']['target']?>.php?d=<?php echo $key?>"><?php echo date('Y / m', strtotime($key))?></a></li>
 <?php endforeach?>
 </ul>
 </li>
</ul>

これで問題なくThe W3C Markup Validation Servicevalidが貰えるようになっているはず。

前へ 1 2 3 4 5 6 7 8 __ __ 次へ