dポイントプレゼントキャンペーン実施中!

会社のApacheでローカルなサーバを動かしています。
ある日、拡張子なしでCGIを実行したいと思い立ちました。
具体的には、
http://localhost/
にアクセスしたときに、「index.*」を探して、結局「index.cgi」を実行するようにしたいです。
そこで、設定ファイル(httpd.conf)を次のように変更しました。

・ドキュメントルートのOptionsにExecCGIとMultiViewsを追加
Options FollowSymLinks ExecCGI MultiViews

・DirectoryIndexにindexと指定
DirectoryIndex index

これでできるかと思ったのですが、
http://localhost/
にアクセスすると「403 Forbidden」が表示されてしまいます。さらに、
http://localhost/index
にアクセスすると「404 Not Found」となります。
普通に
http://localhost/index.cgi
としてアクセスすると、問題なくページが表示されます。

タイプマップを使えば実現できるのですが、一々「.var」ファイルを作成するのが面倒なので、一括で行いたいと思っております。
どこの設定を見直せばよろしいのでしょうか?
ご教示ください。よろしくお願い致します。

OS : Linux debian 2.6.18-6-486
httpd : Apache/2.2.8 (Unix)
perl : v5.10.0 built for i686-linux

A 回答 (1件)

以下で私の環境(FC5+apache223+suexec)では問題なく動作しました


###書き方の1.
Options FollowSymLinks ExecCGI MultiViews
MultiviewsMatch Handlers
Addhandler cgi-script .cgi
DirectoryIndex index

### 書き方の2 (古臭い書き方を利用する)
Options FollowSymLinks ExecCGI MultiViews
AddType application/x-httpd-cgi .cgi
DirectoryIndex index

### 書き方の3 (使用注意!:ディレクトリ以下の全fileを掌握していないと危ないかも?)
## いちいちMime-TypeをMultiviewsMatchに登録しなくても全部のtypeが有効らしい 
#前略
MultiviewsMatch any
#以下略

##### 説明
http://httpd.apache.org/docs/2.2/ja/content-nego …
の MultiViews の説明をよく読むと
| エンコーディングを 指定するための mod_mime で認識できる拡張子を持たないファイルが見つかると、
|結果は MultiViewsMatch ディレクティブの設定に依存します。
と有ります、
で、
http://httpd.apache.org/docs/2.2/ja/mod/mod_mime …
に説明が書いてあります
    • good
    • 0
この回答へのお礼

MultiviewsMatchが必要だったのですね。
早速追加してみたところ、無事成功しました。
これで私も、人生で初めてコンテント・ネゴシエーションの恩恵に肖ることができました。
心から感謝致しております。
ご回答有難うございました。

お礼日時:2008/06/12 17:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!