cgi-bin配下にあるYukiWikiのスタイルシートの適応や画像の表示ができない

はじめに

自分のPCで動かしているApacheにYukiWikiをインストールしてみた.インストールといっても,ダウンロードしたアーカイブを展開してcgi-binディレクトリに放り込んだだけである.あっさり起動したのだが,画面があっさりしすぎている.どうやら,スタイルシートに書いてある内容が反映できていないようだ.ロゴ画像も出ていない.解決しなければ.

環境は以下の通りである.

  • Windows XP Professional SP1a
  • Apache 2.0.48(Windows版)
  • cygwin 1.5.7-1
  • perl 5.8.0

主だったディレクトリ構成は以下の通り.

C:/Program Files/Apache Group/Apache2/
Apacheをインストールしたディレクトリ.以下$APACHE_HOMEと表記.
$APACHE_HOME/cgi-bin/ykwk/
YukiWikiをインストールしたディレクトリ.

cygwinで動かしているので,まず$APACHE_HOME/cgi-bin/ykwk/wiki.cgiの1行目を以下のように修正する.

修正後:#!c:/progra~1/cygwin/bin/perl.exe
修正前:#!/usr/bin/perl
        

アクセスするためのURLはhttp://localhost/cgi-bin/ykwk/wiki.cgiである.FrontPageが表示できればYukiWikiは動いている.

やり方その1:スタイルシートと画像の保管ディレクトリを変える

$APACHE_HOME/cgi-bin/にあるからスタイルシートも画像もうまく扱えないのなら,移してしまえば良いということだ.$APACHE_HOME/cgi-bin/ykwk/から$APACHE_HOME/htdocs/ykwk/へ移すことにする.htdocsに移したのはhttpd.confを変更しなくてもアクセスできるからで,他意はない. 移すファイルは以下の三つ.

  • wiki.css
  • icon40x40.gif
  • icon80x80.gif

$APACHE_HOME/cgi-bin/ykwk/wiki.cgiを以下の通り修正する.

修正後:my $modifier_url_data = 'http://localhost/ykwk'; # Your data URL (not DIRECTORY, but URL).
修正前:my $modifier_url_data = '.'; # Your data URL (not DIRECTORY, but URL).
        

http://localhost/cgi-bin/ykwk/wiki.cgiへアクセスして,スタイルシートと画像がきちんと扱えていれば成功である.

うまくいかない場合は,ブラウザの「ソースを表示」を使ってFrontPageソースを表示してみよう.スタイルシートや画像ファイルのURLが正しく設定できているのか確認できる.

やり方その2:httpd.confを修正

デフォルトの設定で,apacheはcgi-bin配下のファイルは全てcgiと扱う.cssもgifもcgiとして実行を試みる.当然失敗する.cssやgifはスタイルシートや画像として扱うようにapacheを設定すれば,YukiWikiのディレクトリ構成を変えなくても使えるようになる.つまり,やり方その1のように特定のファイルを別ディレクトリに移す必要はなくなる.

そのためには,httpd.confを修正する.具体的には,AddHandlerを使って拡張子cssとgifに対応するハンドラを指定する.以下の通りである.

<Directory "C:/Program Files/Apache Group/Apache2/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
    AddHandler text/css  css #追加
    AddHandler image/gif gif #追加
</Directory>
        

拡張子にはピリオドをつけてもつけなくても良い.つまり,“AddHandler text/css css”と“AddHandler text/css .css”,“AddHandler image/gif gif”と“AddHandler image/gif .gif”は同じことである.拡張子に対応するハンドラは${APACHE_HOME}/conf/mime.typesの中に書いてあるものを書けば良い(と思う).

もし,やり方その1$APACHE_HOME/bin/ykwk/wiki.cgi$modifier_url_dataを修正していたら,修正前の状態へ戻す必要がある.

httpd.confを修正したのでApacheを再起動して,http://localhost/cgi-bin/ykwk/wiki.cgiにアクセスしてみよう.スタイルシートと画像がきちんと扱えていれば成功である.