以前書いたエントリで、mod_rewriteを利用して、URLからCGIのファイル名を隠す方法を書いたわけですが、うまくいかないという人が多いので、まとめて書き直してみます。
まず必要条件は、mod_rewriteというApacheモジュールがサーバーにインストールされており、かつ任意のディレクトリで使用可能なことです。この条件を満たしているか良くわからない場合は、管理者に聞くなどして調べましょう。
次にblosxomの設定です。blosxomの設定に$urlというものがあるのですが、これをきちんと設定しないと、実際にCGIのファイル名を隠した状態でリンクを張ってくれません。具体的には、
$url = "http://example.com/blosxom";
というようになります。最後にスラッシュは付けない方が良いと思います(付いていても多分動くと思いますが)。付けない理由は、Permanent link絡みです。Permanent linkは、
$url$path/$fn.$default_flavour
などと書くわけですが、この場合$pathはスラッシュで始まります。$urlの最後にスラッシュが付いていると、スラッシュが二つ重なってしまうことになります。
最後に.htaccessの記述です。blosxom.cgiのままの場合は、
DirectoryIndex blosxom.cgi
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ blosxom.cgi/$1 [L,QSA]
となり、これをblosxom.cgiと同じディレクトリに置きます。1行目はファイル名無しでこのディレクトリにアクセスした場合に、index.htmlなどの代わりにblosxom.cgiを使うという命令です。2行目がmod_rewriteを有効にする命令です。3行目はリクエストされたファイル名が存在した場合、mod_rewriteの処理を抜ける命令で、4行目がリクエストされたディレクトリ名が存在した場合、mod_rewriteの処理を抜ける命令です。5行目が実際にURLの書き換えを行う命令になります。
こんなもんですかね。XREAではこんな感じできちんと動いてくれています。ありがちなトラブルとしては、$datadirがblosxom.cgiを設置したディレクトリと同じ場合とか、.htaccessをCR+LFのままでアップロードしちゃった場合とかですかね。他にこんなトラブルで躓いたとかがあったら教えてください。
Internet Magazine 5月号「最強 Blog ツールをセットアップ!」で、blosxom が紹介されています。記事を書かれてるのはこの blog の author でもある hail2u の kyo さんです。非常にわかりやすい記事です。