# Does Vercel support permanent redirects?

**Author:** Sam Ko

---

The Vercel platform supports both [301 permanent redirects](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/301) and [308 permanent redirects](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/308). Both **permanent** redirects are supported for [domain redirects](https://vercel.com/docs/custom-domains#redirecting-domains) and in-application paths.

This article covers how to achieve either a **permanent** or **temporary** redirect with domain redirects or in-application paths.

## Domain Redirects

To add a domain redirect, simply click the **Edit** button on a domain from your project's **Domain** settings.

A domain redirect can be **temporary** or **permanent** by specifying a status code. For more information about the different redirect status codes, you can check out our [**Redirect Status Codes**](https://vercel.com/docs/custom-domains#redirecting-domains) documentation.

## In-Application Redirects

To add an in-application redirect, you can use either a [`next.config.js`](https://nextjs.org/docs/api-reference/next.config.js/redirects) configuration file for Next.js projects, or a [`vercel.json`](https://vercel.com/docs/configuration#project/redirects) configuration file for all other use cases.

### Next.js Redirects

`module.exports = { async redirects() { return [ { source: '/about', destination: '/', permanent: true, }, ] }, }`

The `permanent` property is a boolean to toggle between **permanent** and **temporary** redirect (default true). When true, the status code is 308. When false the status code is 307.

### Other Redirects

`{ "redirects": [ { "source": "/view-source", "destination": "https://github.com/vercel/vercel", "permanent": true } ] }`

Similar to a `next.config.js` file, the `permanent` property is a boolean to toggle between **permanent** and **temporary** redirect (default true). When true, the status code is 308. When false the status code is 307.

In rare cases, you may need to assign a custom status code for older HTTP Clients to properly redirect. You can use the `statusCode` property instead of the permanent property, but not both.

`{ "redirects": [ { "source": "/view-source", "destination": "https://github.com/vercel/vercel", "statusCode": 301 } ] }`

---

[View full KB sitemap](/kb/sitemap.md)
