Region ID
The REGION_ID
is an abbreviated code that Google assigns
based on the region you select when you create your app. The code does not
correspond to a country or province, even though some region IDs may appear
similar to commonly used country and province codes. For apps created after
February 2020, REGION_ID.r
is included in
App Engine URLs. For existing apps created before this date, the
region ID is optional in the URL.
Learn more about region IDs.
The dispatch.yaml
allows you to override routing
rules.
You can use the dispatch.yaml
to send incoming requests to a specific service
(formerly known as modules) based on the path or hostname in the URL.
For more information, see How Requests are Routed.
An app can have only one dispatch.yaml
file, and the routing rules in that file
apply to all of the app's services and versions.
The routing rules also apply to URLs that are
used in a cron file
or a task queue configuration.
Deploying the dispatch file
The dispatch.yaml
file should reside in the root
directory or in the
directory that defines the default service.
Before you deploy your dispatch file, you must ensure that all the services
defined in that file have already been deployed to App Engine. To deploy
the dispatch.yaml
file, run the
gcloud app deploy
command from the
directory that contains the dispatch.yaml
:
gcloud app deploy dispatch.yaml
For more information about the deployment commands, see
Deploying a Python 2 App.
Syntax
The root element in the dispatch.yaml
file is dispatch:
and contains a list
of routing definitions that are specified by the following subelements.
The rules that you define in your dispatch file must use HTTP URL patterns
that include the ".
" notation for separating subdomains. URLs
defined with the HTTPS "-dot-
" notation are not supported.
Dispatch rules are order dependent, and only the first rule that matches a URL will be applied.
Element | Description |
---|---|
service |
Specifies the name of the service that will handle the requests that
match the |
url |
In the
Tip: You can include glob patterns like the A URL pattern that can include the hostname and URL path. Glob characters can be used to match patterns. The Glob characters can be specified only at the beginning of the pattern and end of the pattern.
URL paths that begin with |
Example
The following is a sample dispatch file that routes requests to
https://simple-sample.uc.r.appspot.com
and requests like
https://simple-sample.uc.r.appspot.com/favicon.ico
to the default
service. All
static content is served from the default
service. Mobile requests like
https://simple-sample.uc.r.appspot.com/mobile/
are routed to a mobile frontend, and
worker requests like https://simple-sample.uc.r.appspot.com/work/
are routed to a
static backend.
dispatch:
# Default service serves the typical web resources and all static resources.
- url: "*/favicon.ico"
service: default
# Default service serves simple hostname request.
- url: "simple-sample.uc.r.appspot.com/"
service: default
# Send all mobile traffic to the mobile frontend.
- url: "*/mobile/*"
service: mobile-frontend
# Send all work to the one static backend.
- url: "*/work/*"
service: static-backend
If you prefer general routing rules that match many possible requests, you can define rules with wider scopes. For example:
# Send any path that begins with “simple-sample.uc.r.appspot.com/mobile” to the mobile-frontend service.
- url: "simple-sample.uc.r.appspot.com/mobile*"
service: mobile-frontend
# Send any domain/sub-domain with a path that starts with “work” to the static backend service.
- url: "*/work*"
service: static-backend
You can also write expressions that are more strict:
# Matches the path "/fun", but not "/fun2" or "/fun/other"
- url: "*/fun"
service: mobile-frontend
# Matches the hostname 'customer1.myapp.com', but not '1.customer1.myapp.com.
- url: "customer1.myapp.com/*"
service: static-backend
Limits
The dispatch file can contain up to 20 routing rules. When specifying the URL string, neither the hostname nor the path can be longer than 100 characters.
Deleting all dispatch rules
To delete all dispatch rules:
Edit the contents of the
dispatch.yaml
file to:dispatch: []
Deploy the
dispatch.yaml
file to App Engine.