質問 |
||
| QNo.4094714 | Apacheでのコンテントネゴシーエーションのやり方 | |
|---|---|---|
| 質問者:_--_--_-_- |
会社の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 |
|
困り度:
|
||
| 質問投稿日時: 08/06/12 12:55 |
||
回答良回答20pt |
|
| ANo.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-negotiation.html#negoti... の MultiViews の説明をよく読むと | エンコーディングを 指定するための mod_mime で認識できる拡張子を持たないファイルが見つかると、 |結果は MultiViewsMatch ディレクティブの設定に依存します。 と有ります、 で、 http://httpd.apache.org/docs/2.2/ja/mod/mod_mime.html#multiviewsmatch に説明が書いてあります |
|---|---|
| 回答者:umasikajiro | |
| 種類:アドバイス どんな人:経験者 自信:参考意見 |
|
| 回答日時: 08/06/12 14:26 |
|
| |
| この回答へのお礼 | MultiviewsMatchが必要だったのですね。 早速追加してみたところ、無事成功しました。 これで私も、人生で初めてコンテント・ネゴシエーションの恩恵に肖ることができました。 心から感謝致しております。 ご回答有難うございました。 |