April 08, 2004

URLからCGIのファイル名を隠す

以前書いたエントリで、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のままでアップロードしちゃった場合とかですかね。他にこんなトラブルで躓いたとかがあったら教えてください。

Posted by kyo at 08:04 PM | Comments (17) | TrackBack

April 07, 2004

Internet Magazine に blosxom の記事

Internet Magazine 5月号「最強 Blog ツールをセットアップ!」で、blosxom が紹介されています。記事を書かれてるのはこの blog の author でもある hail2u の kyo さんです。非常にわかりやすい記事です。

Posted by miyagawa at 07:45 PM | Comments (6) | TrackBack