# Routing & Controllers

Learn about Umbraco’s routing pipeline and the different types of controllers used in Umbraco, how they work, and what they’re used for.

## [Custom Controllers (hijacking routes)](/umbraco-cms/reference/routing/custom-controllers.md)

Create custom controllers to override Umbraco’s default rendering behavior, a technique known as “hijacking routes.”

## [Custom Routes](/umbraco-cms/reference/routing/custom-routes.md)

Define your own MVC routes in your Umbraco application.

## [Custom Middleware](/umbraco-cms/reference/routing/custom-middleware.md)

Learn how to add custom middleware to Umbraco’s ASP.NET Core pipeline.

## [URL Rewrites in Umbraco](/umbraco-cms/reference/routing/iisrewriterules.md)

Explains how to configure IIS rewrite rules for your Umbraco site.

## [Special Property Type aliases for routing](/umbraco-cms/reference/routing/routing-properties.md)

Describes the reserved property type aliases that influence Umbraco’s routing behavior, such as URL aliases and redirects.

## [URL Redirect Management](/umbraco-cms/reference/routing/url-tracking.md)

Understand how Umbraco automatically creates redirects when content is moved or renamed.

## [Routing in Umbraco](/umbraco-cms/reference/routing/request-pipeline.md)

Explains how Umbraco builds and resolves URLs, maps them back to content items, and determines how requests are rendered.

## [Surface Controllers](/umbraco-cms/reference/routing/surface-controllers.md)

Learn what Surface Controllers are and how to use them to handle form submissions or render partial views.

## [Umbraco API Controllers](/umbraco-cms/reference/routing/umbraco-api-controllers.md)

Describes how to create and use Umbraco API Controllers to expose custom Web API endpoints from your Umbraco application.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.umbraco.com/umbraco-cms/reference/routing.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
