pythonで書いたウェブアプリの拡張子を隠す
いつも忘れるのでメモ。
pythonで小さなAPI群を開発したとして、urlにpythonスクリプトの拡張子.pyをつけずにアクセスするにはどうすればいいか。
http://localhost:8000/api/add.py
のようなurlではなく
としたい。こっちのほうがすっきりするから。
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として設定される。