> ## Documentation Index
> Fetch the complete documentation index at: https://developer.upsun.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Rewrite requests without redirects

> Rewrite requests to be served by other parts of your app without directing users.

You might want to rewrite requests so they're served by specific sections of your app
without having to redirect users.
For example, you might want to make URLs seem semantic to users without having to rewrite your app architecture.

In such a case, you might want requests to `/shoes/great-shoe/` to be served
as if they were requests to `/?category=shoes&product=great-shoe`.
If so, add a [rule](/docs/configure-apps/image-properties/web#rules) similar to the following:

```yaml .upsun/config.yaml theme={null}
applications:
  myapp:
    source:
      root: "/"
    web:
      locations:
        '/':
          ...
          rules:
            '^/(?<category>[^/]+)/(?<product>[^/]+)/$':
              passthru: '/?category=$category&product=$product'
```

Or you might organize your images by file type, but don't want to expose the organization externally.
You could rewrite requests to do that behind the scenes:

```yaml .upsun/config.yaml theme={null}
applications:
  myapp:
    source:
      root: "/"
    web:
      locations:
        '/':
          ...
          rules:
            '^/img/(?<name>.*)\.(?<type>.*)$':
              passthru: '/$type/$name.$type'
```

Now a request to `/img/image.png` returns the file found at `/png/image.png`.

## Query parameters

Query parameters in the request are untouched by rules and will be passed to the app.
For example, if you have the category and product rule from previously, a request to `/shoes/great-shoe/?product=terrible-shoe`
is rewritten to `?category=shoes&product=great-shoe&product=terrible-shoe`.
In that case, the `product` query parameter sent to the app will contain the value `terrible-shoe`.
