# ErrorPage

It Has Never Been Easier to Say That Something Went Wrong
{: .subtitle }

![ErrorPages](../assets/img/middleware/errorpages.png)

The ErrorPage middleware returns a custom page in lieu of the default, according to configured ranges of HTTP Status codes.

!!! important
    The error page itself is _not_ hosted by Traefik.

## Configuration Examples

??? example "File -- Custom Error Page for 5XX"

    ```toml
    [http.routers]
      [http.routers.router1]
        Service = "my-service"
        Rule = Host(`my-domain`)

    [http.middlewares]
      [http.middlewares.5XX-errors.Errors]
        status = ["500-599"]
        service = "error-handler-service"
        query = "/error.html"
                
    [http.services]
      # ... definition of error-handler-service and my-service
    ```

??? example "Docker -- Dynamic Custom Error Page for 5XX Status Code"

    ```yaml
    a-container:
      image: a-container-image 
        labels:
          - "traefik.http.middlewares.test-errorpage.errors.status=500-599",
          - "traefik.http.middlewares.test-errorpage.errors.service=serviceError",
          - "traefik.http.middlewares.test-errorpage.errors.query=/{status}.html",
            		
    ```
    
    !!! note 
        In this example, the error page URL is based on the status code (`query=/{status}.html)`.

## Configuration Options

### status

The `status` that will trigger the error page.

The status code ranges are inclusive (`500-599` will trigger with every code between `500` and `599`, `500` and `599` included).
 
!!! Note

    You can define either a status code like `500` or ranges with a syntax like `500-599`.

### service

The service that will serve the new requested error page.

### query

The URL for the error page (hosted by `service`). You can use `{status}` in the query, that will be replaced by the received status code.
