registerStaticFilesDirectory(directory, url_prefix="/static", port=-1)
サーバーがurl_prefix
で始まるパスのリクエストを受信すると、そのリクエストパスの残りの部分をディレクトリパスに追加したパスにファイルが存在していれば、
サーバーは自動的にそのファイルをクライアントに供給します。
このハンドラーをサーバーのメインポート以外のポートで実行させたい場合は、オプションでport
を指定することができます。
この関数は、URLハンドラーからコールするのではなく、hwebserver.runコールの前にコールしてください。
例えば、以下を実行して:
hwebserver.registerStaticFilesDirectory("/var/www/files", "/static")
…クライアントが以下のサーバーパスをリクエストして:
/static/css/main.css
…このファイルが存在した場合:
/var/www/files/css/main.css
…サーバーは、Pythonハンドラー不要で自動的にクライアントにmain.css
ファイルを提供します。
Pythonハンドラーではなくて、このようにしてサーバーが静的ファイル(Houdiniデータから動的に生成されないファイルで、例えばCSSやJavaScriptファイルなど)を用意するようにサーバーのセットアップを試してください。
Note
URLハンドラーが静的パスプリフィックスよりも特定された(もっと多くのパス部分にマッチする)URLを持っている場合、サーバーは、静的検索の代わりにそのハンドラーを使用します。
例えば、上記の静的ディレクトリが登録されていて、クライアントが/static/geo/foo.bgeo
をリクエストし、/static/geo
に対して動的ハンドラーがある場合、
サーバーは、静的ファイルを検索するのではなく、そのハンドラーを使用します。
これは、サーバーネームスペース内の静的ファイルと混在しつつ動的に生成されるリソースがいくつか必要な場合に役立ちます。
とはいえ、通常では、混乱を避けるために、静的ファイルに対してデフォルトの/static
プリフィックスを使用するなどして、静的リソースと動的リソースを分けるのが良いです。
See also |