seclan のほえほえルーム

| |

Apache: mod_rewrite を使用せずに拡張子のない CGI プログラムを実行する方法

・
2007/01/29 []

cgi の実行と言えば、通常は http://example.com/somecgi.cgi?p1=a&p2=b&p3=c のような書き方をして、パラメータを渡します。しかし、http://example.com/somecgi.cgi/a/b/c のような書き方をして PATH_INFO に /a/b/c を渡すといった方法もあります。この記述方法は、あたかも通常のファイルアクセスかのように記述できるので便利であるという利点があります。しかし、.cgi という拡張子が見えているところが、少し見栄えが悪いです。この .cgi という拡張子が消えてくれれば、見栄えが少しよくなるのですが、どのようにしたら消すことができるのでしょうか。

一つは mod_rewrite を使用する方法です。しかし、この方法は設定許可されているサーバが少ないと言う問題があります。

他の方法として、今回紹介する方法があります。その方法とは .htaccess で Files でファイルを指定し、その中で ForceType ディレクティブを使うという方法です。具体的には somecgi.cgi を somecgi というファイル名に変更し、同じディレクトリに次のような .htaccess ファイルを作成します。

<Files "somecgi">
ForceType application/x-httpd-cgi
</Files>

この設定は、somecgi というファイルに、強制的にapplication/x-httpd-cgiというタイプ、つまり cgi であると Apache に認識させ、cgi として実行させます。ちなみに、モジュール版 php の場合は、次のように設定すると動作することがあります。

<Files "somecgi">
ForceType application/x-httpd-php
</Files>


by seclan

関連


| |

 

配信

23.71 msec