私は Apache ハンドラーを謎解きしようとしています。公式ドキュメントには、次の例があります。
次のディレクティブは、拡張子が html のファイルに対する要求により、footer.pl CGI スクリプトの起動をトリガーします。
Action add-footer /cgi-bin/footer.pl
AddHandler add-footer .html
次に、CGI スクリプトは、最初に要求されたドキュメント (PATH_TRANSLATED 環境変数が指す) を送信し、必要な変更や追加を行います。
私はこの例に従おうとします。私のディレクトリ設定は次のとおりです。
- /var/www/testsite/index.html
- /var/www/testsite/cgi-bin/rp.sh
私の仮想ホストファイルは次のとおりです。
<VirtualHost *:80>
ServerName http://localhost-testsite
DocumentRoot /var/www/testsite
<Directory /var/www/testsite>
Action footer /cgi-bin/rp.sh
AddHandler footer .html
</Directory>
ErrorLog /var/www/logs/error-testsite.log
</VirtualHost>
ドキュメントを正しく理解していれば、html ファイルが要求されたときに、html ファイル名に設定された PATH_TRANSLATED 変数を使用して rp.sh スクリプトを呼び出す必要があります。ただし、ブラウザーで localhost-testsite/index.html を開くと、予期しないエラーが発生します。
[Thu Mar 14 15:38:18 2013] [error] [client 127.0.0.1] File does not exist: /var/www/testsite/cgi-bin/rp.sh/index.html
何か不足していますか?最も重要な質問は、特定の拡張子を持つすべてのファイルを cgi スクリプトで処理するにはどうすればよいかということです。
Apache のバージョンは Apache/2.2.22 (Ubuntu) です。すべてのファイルとディレクトリには 777 パーミッションがあります。