従来のウェブホスティング環境とは違い、 Google App Engine では、そのための設定をしなければアプリケーションソースのディレクトリ外にあるファイルを直接扱うことはできません。
しかし、多くの場合はウェブブラウザに静的ファイルを直接送信したいことでしょう。 通常は画像・CSS スタイルシート・ JavaScript コード・動画・ Flash アニメーションはアプリケーションと一緒に保存され、ブラウザへ直接送信されます。 独自のハンドラをコーディングすることなく、特定のファイルを送信するようApp Engine に指示することができます。
helloworld/app.yaml
を編集し、中身を以下のように書き換えてください:
application: helloworld version: 1 runtime: php55 api_version: 1 handlers: - url: /stylesheets static_dir: stylesheets - url: /.* script: helloworld.php
新たに追加した handlers
項目では、URLに関する二つのハンドラを定義しています。
App Engine がURLが /stylesheets
で始まるリクエストを受信した時、URLの残りの部分を stylesheets
ディレクトリ内にあるファイル名と照らし合わせます。
合致するファイルが見つかった場合は、そのファイルの内容がクライアントへ返されます。
合致しなかった URL も全て/.*
パスに合致するので、helloworld.php
スクリプトで処理されます。
既定では、 App Engine はファイルの拡張子に基づいた MIME タイプを使って静的ファイルを送信します。
例えば、名前が .css
で終わるファイルはtext/css
の MIME タイプとして扱われます。
app.yaml
でハンドラを設定する場合、 mime_type
設定を使って明示的にMIME タイプを設定できます。
URL ハンドラのパスパターンはapp.yaml
に記述された上から下の順番に精査されます。
今回の場合は、/.*
のURLパターンと合致する前にcode>/stylesheetsのURLパターンに合致します。
URLマッピングとapp.yaml
で設定できる他のオプションについての情報は、app.yaml リファレンスを参照してください。
helloworld/stylesheets
ディレクトリを作成してください。この新ディレクトリ内で、以下の内容の main.css
という名前のファイルを新規作成してください。:
body { font-family: Verdana, Helvetica, sans-serif; background-color: #DDDDDD; }
最後に、helloworld/helloworld.php
を編集して以下コードを一番上にあるタグの後ろに挿入してください。:
<head> <link type="text/css" rel="stylesheet" href="/stylesheets/main.css" /> </head>
ブラウザでページを再読み込みしてください。この新バージョンではスタイルシートを使用しています。
完成したアプリケーションを世界へ公開する時が来ました。