たいていのレンタルサーバーでは、拡張子が .cgi のファイルはデフォルトでCGIとして動作するようになっている。 Python(.py)、Ruby(.rb)、Perl(.pl)などの拡張子のままCGIとして動作させる場合、通常は .htaccess に以下のように書く。
Options +ExecCGI -Indexes AddHandler cgi-script .pl .rb .py
しかし、いろいろ試したが、コアサーバーV2プランでは設定が反映させなかった。
コアサーバーV2を使っている人はご存じかもしれないが、コントロールパネルにて新しいドメインを追加すると、サーバーの対象ドメインの直下に cgi-bin というディレクトリが自動的に作成される。 このディレクトリにはデフォルトで .htaccess が設置されており、上記の AddHandler が有効となっている。 今時 cgi-bin 以下でしかCGIが使えないのかと思ったが、拡張子が.cgiなら他のディレクトリでも動作する。
では、AddHandlerが無効となっている cgi-bin 以外のディレクトリで.pyや.rbなどの拡張子のCGIを動作させることはできないのか?
もしかするとコントロールパネルに .htaccess 関連の設定があるのではと思い探したところ発見した。 設定手順は以下の通り。
一度に追加できる拡張子は一つで、別の拡張子も追加したい場合は再度同じ作業を行う。
コントロールパネルには追加したハンドラの一覧が表示されるが、上手く表示されない場合は、「幅:」の横にあるリロードボタン🔄をクリックしてみると良い。
なぜこのような仕様なのか分からないが、このせいでハマり、無駄な時間を過ごしてしまった。 コアサーバー公式のヘルプには特に説明がなく、同じようにハマる人がいるかもしれないので、ここに記しておく。 これは2022年3月時点の仕様であり、今後仕様が変更される可能性もある。