1

私はGAEに比較的慣れていないので、URLマッピングを理解するのに少し苦労しています。

静的なデータセット(HTMLテンプレート、ログインフォーム、jsなど)と動的なセクションがあります。

私の現在のapp.yamlは次のとおりです。

handlers:
- url: /.*
  static_dir: /static
- url: /service/.*
  script: _go_app
  login: required

ここでの考え方はhttp://myapp/service/foo、アプリにルーティングすることであり、他のようなものはすべてhttp://myapp/foo.html機能するはず/static/foo.htmlです。ただし、静的リクエストで404エラーが発生します。

アイデア?

4

3 に答える 3

4

ドキュメントによると、

url:URLプレフィックス。この値は正規表現構文を使用します(したがって、regexp特殊文字はエスケープする必要があります)が、グループ化を含めることはできません。このプレフィックスで始まるすべてのURLは、ファイルパスの一部としてプレフィックスの後のURLの部分を使用して、このハンドラーによって処理されます。

あなたの場合、を指定しているurl: /.*ので、プレフィックスはになりfoo.html、フェッチするファイルのファイル名は空になります。

さらに、ハンドラーは上から下に評価されるため、順序を変更する必要があります。

handlers:
- url: /service/.*
  script: _go_app
  login: required
- url: /
  static_dir: static
于 2012-09-06T17:59:16.227 に答える
2

順序は重要であるため、静的ハンドラーの上に移動しない限り、/service/ハンドラーが呼び出されることはありません。また、404は、静的宣言の構文が正しくないことが原因です。ハンドラーを次のように変更します。

handlers:
- url: /service/.*
  script: _go_app
  login: required
- url: /
  static_dir: static
于 2012-09-06T17:52:47.810 に答える
-1

static_dirディレクティブは、指定された正規表現に一致するプレフィックスの後の名前でファイルを提供します。REがで終わる場合、.*URL全体がプレフィックスと見なされるため、ファイルパスとして使用するものは残りません。

url: /代わりに試してください。

また、ハンドラーは順番に照合されます。

正規表現/.*は、リクエストを受信できるすべてのURLと一致するため、それ以降は一致しません。最後に置いてください。

于 2012-09-06T17:47:42.993 に答える