これは非常に具体的な質問ですが、良い答えは、Apacheリクエストの処理についての理解を深めるのにも役立つかもしれません。
HTMLページを生成するためのPythonスクリプトがあります。スクリプトは、次のapache構成アイテムを使用して呼び出されます。
WSGIScriptAliasMatch ^.*\.mako$ /usr/local/lib/cgi-bin/myscript.py
しかし、私はむしろファイルが一般的に使用される.mako
のと同じようにファイルを使用したいと思い.php
ます。つまり、リクエストが一致する^.*\.mako$
場合、スクリプトは、構成アイテムが存在しない場合にapache自体によって提供されるファイルがサーバー上にある場合にのみ呼び出す必要があります。また、Pythonスクリプトでそのファイルにアクセスします。
それは可能ですか?リクエストURI(実際にはwsgiで処理されます)からPythonスクリプトのファイル名を推測しようとする醜いハックを使用したくありません。
アップデート:
とても素敵な解決策をありがとう!多くの人が同じように柔軟なものを探しているように見えるので、私は最終的なセットアップを公開すると思いました。私が欲しいのは、非常に混合された環境です。つまり、編集を容易にするために、静的コンテンツと動的コンテンツを同じディレクトリに配置したいと考えています。また、フォールバックとして動的コンテンツに透過的にアクセスできる必要があります。たとえば、のリクエストですhttp://someserver/file.html
が、物理ファイルがない場合は/var/www/file.html
、既存のを使用して動的に生成します/var/www/file.html.mako
。
apache.conf:
# Disable MultiViews, it will get in your way!
# if resource.html doesn't exist, but resource.html.mako does,
# then use that
RewriteCond ${REQUEST_FILENAME} !-f
RewriteCond ${REQUEST_FILENAME}.mako -f
RewriteRule (.*\.html) $1.mako
# Make .mako files dynamically interpreted by /usr/.../mako-handler.py
AddHandler x-application/mako-template .mako
Action x-application/mako-template /mako-handler
WSGIScriptAlias /mako-handler /usr/.../mako-handler.py
mako-handler.py:
...
physical_template_filepath = environ['PATH_TRANSLATED']
...