複数ブログを運用する際のタグサーチ
1つのMTで複数のブログを運用する際、タグサーチのURLが意図しない場所になることがあります。
例えば、このj-sp.netでは、MTをj-sp.net直下にインストールして、複数のサブドメインを運用しており、mobile.j-sp.netのタグサーチURLはそのままだとj-sp.net配下のmt-search.cgiになってしまいます。
これを回避するため、ちょっとした細工をしましたのでご紹介しておきます。
■ サーチCGIを実行して結果を表示するPHPプログラムを作成
<?php
$result = file_get_contents("http://MTのインストールパス/mt-search.cgi?" . $_SERVER["QUERY_STRING"]);
echo $result;
exit;
?>
file_get_contentsを使い、このPHPプログラムがクライアントとなりmt-search.cgiを呼び出します。
$_SERVER["QUERY_STRING"]により、GETパラメータをそのまま透過しますので、mt-search.cgiの代わりにこのPHPプログラムを呼び出してやれば良いということになります。
最後にechoで実行結果をブラウザに出力します。
このプログラムをサブドメイン上に置いておくことで、タグサーチURLがサブドメイン配下のURLとなります。
■ MTテンプレートの書き換え
作成したPHPプログラムを呼び出すようにMTのテンプレートを書き換えます。
上記PHPプログラムをmt-search.phpとして保存し、サブドメイン配下の/mt/ディレクトリに置いたとして話を進めます。
<$MTTagSearchLink$>
となっている部分を、
<$MTBlogURL$>mt/mt-search.php?tag=<$MTTagName$>
と書き換えます。
これで、サイト内のタグを検索するためのURLが、正しくそのサイトのサブドメイン内におさまります。
同様の方法でPHP側をPOSTパラメータに対応すれば通常の検索URLもサブドメイン内に持ってくることができます。
当サイトでは、SEO的に関係のあるリンクである(ページ上に表示される)タグサーチのみを対象に今回の細工をしています。
Perlを使ったCGIプログラムでもPHPと同様のプログラミングは可能ですが、意外と面倒なのと特にメリットもないので今回はPHPでの方法をご紹介しました。
詳細は割愛しますが、CGIとしたい場合はLWPモジュールを利用します。






コメントを書き込む