<br />

<br />


### 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](https://docs.cloud.google.com/appengine/docs/standard/python/how-requests-are-routed#region-id).
<button class="devsite-dialog-close">OK</button>

The `dispatch.yaml` allows you to override [routing
rules](https://docs.cloud.google.com/appengine/docs/standard/how-requests-are-routed#routing_via_url).
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](https://docs.cloud.google.com/appengine/docs/standard/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](https://docs.cloud.google.com/appengine/docs/standard/scheduling-jobs-with-cron-yaml).


<br />

## Deploying the dispatch file

<br />


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`](https://docs.cloud.google.com/sdk/gcloud/reference/app/deploy) command from the
directory that contains the `dispatch.yaml`:

    gcloud app deploy dispatch.yaml

<br />

<br />

For more information about the deployment commands, see [Deploying an App](https://docs.cloud.google.com/appengine/docs/standard/testing-and-deploying-your-app#deploying_your_application).

## 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` pattern. Note that services were previously called modules. |
| `url` | In the `url` element, you define the URL pattern within quotes, which can include the host name and URL path that are no longer than 100 characters. For the `service` element, you specify the name of the service that you want handling any incoming requests that match the URL pattern of the `url` element. Tip: You can include glob patterns like the `*` wildcard character in the `url` element; however, those patterns can be used only before the host name and at the end of the URL path. URL paths that begin with `/_ah/` are not routed by the dispatch file. |

## 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.

Example:

    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.

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.

Example:

    # 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

You can create rules to re-direct your incoming domain requests to a service.
The following rules route incoming requests from "customer1.myapp.com" to the
default service and incoming requests from subdomains to a static backend
service.

Example:

    # Matches the domain name 'customer1.myapp.com' and directs all the request to default service 
    - url: "customer1.myapp.com/*"
      service: default

    # Matches all the subdomains of 'customer1.myapp.com' and directs all the request to static-backend service
    - 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:

1. Edit the contents of the `dispatch.yaml` file to:

       dispatch: []

2. Deploy the `dispatch.yaml` file to App Engine.