• 締切済み

ApacheでVirtualHostを使うとDirectoryIndexが上手くいかない

CentOS4.4で、Apache2.0を使っています。 バーチャルホストを使っていて、ドメインによって表示を分けるのはうまくいっています。 以下の抜粋のように設定しています。 http://foofoo.com/cgi-bin/hoge/hage/wiki.cgi http://foofoo.com/hoge/hage/wiki.cgi は問題なく実行できています。 <VirtualHost *:80> ServerAdmin xxxx@yyy.com DocumentRoot /var/www/html ServerName foofoo.com ScriptAlias /hoge/hage/ "/var/www/cgi-bin/hoge/hage/" </VirtualHost> 以下のように設定を変えても、 http://foofoo.com/cgi-bin/hoge/hage/ http://foofoo.com/hoge/hage/ へアクセスしても You don't have permission to access /tech/wiki/ on this server. となってしまいます。 <VirtualHost *:80> ServerAdmin xxxx@yyy.com DocumentRoot /var/www/html ServerName foofoo.com ScriptAlias /hoge/hage/ "/var/www/cgi-bin/hoge/hage/" <Location /hoge/hage/> DirectoryIndex wiki.cgi </Location> </VirtualHost> バーチャルホストを使う場合のDirectoryIndexの設定方法を教えてください。 よろしくお願いいたします。

みんなの回答

  • hito-koto
  • ベストアンサー率53% (14/26)
回答No.2

そのケースでしたら、次のようにします。 #まず、mod_rewriteを有効にしておいてください。 ScriptAliasの前に、 RewriteEngine on RewriteRule ^/hoge/hoge/$ /hoge/hoge/wiki.cgi RewriteRule ^/cgi-bin/hoge/hoge/$ /cgi-bin/hoge/hoge/wiki.cgi と追加してみてください。(DirectoryIndexの行は削除して構いません) cgiにDirectoryIndexは効かないことが理由だと思います。

10940
質問者

お礼

回答ありがとうございます。お礼が遅くなり申しわけありません。 RewriteEngineの使い方が悪いのか、うまくいきませんできた。 別の方法でうまくいきました。 <VirtualHost *:80> .. <Directory /var/​www/hoge/hage/> AllowOverride All </Directory> </VirtualHost> として、 /var/​www/hoge/hage/.htacces を以下のようにしました。 ptions +ExecCGI AddHandler cgi-script .cgi DirectoryIndex hiki.cgi <Files "hikiconf.rb"> deny from all </Files> ここではDirectoryIndexでうまくいっているので、httpd.confのほうでもうまくいくと思うのですが...。 とりあえずは自己解決です。継続して勉強します。

  • hito-koto
  • ベストアンサー率53% (14/26)
回答No.1

いうまでもないことですが、restart/reloadはなさっていますよね。。。 その時、およびアクセス時にerror.logになにか出力されていませんか…?

10940
質問者

お礼

error.logにメッセージがありました。 attempt to invoke directory as script: /var/www/cgi-bin/hoge/hage/ 少しググッてみると根がふかそうです。 解決された方いますか?

関連するQ&A