pythonで書いたウェブアプリの拡張子を隠す

いつも忘れるのでメモ。

pythonで小さなAPI群を開発したとして、urlにpythonスクリプトの拡張子.pyをつけずにアクセスするにはどうすればいいか。

http://localhost:8000/api/add.py

のようなurlではなく

http://localhost:8000/api/add

としたい。こっちのほうがすっきりするから。

apacheで設定しておくと.pyの拡張子のついたプログラムがcgiプログラムとして動作する。けれど今、プログラムに拡張子がついていないのでapacheにただのテキストと解釈されてしまう。

urlマッピングツールのようなモジュールやurlマッピングのついたフレームワークを使うほどの規模ではないのでできるだけサードパーティーのモジュールは使いたくない。

こんなときは.htaccessでこのファイルはcgiプログラムだよと設定するとよい。

<FilesMatch "(ping|create|read|update|delete)">
    ForceType application/x-httpd-cgi
</FilesMatch>

上の例だと.htaccessファイルの置き場所と同じディレクトリにあるping,craete,read,update,deleteというpythonスクリプトcgiとして設定される。