# Redirects and Configuration — Next.js

Source: https://www.skillbyai.com/en/nextjs/a-redirect

> Move URLs without breaking links.

## next.config redirects

`next.config.ts` holds project configuration: redirects, rewrites, headers, image settings, experimental flags. **Redirects** declared there run before rendering; `permanent: true` sends a 308 (cached by browsers and search engines), `false` a 307. Use them when renaming routes so old links and search results keep working. Inside components and actions, `redirect()` from `next/navigation` redirects programmatically.

## A permanent redirect in next.config.ts

This file is from a small demo store I built with Next.js 16.3.8, React 19.3 and TypeScript; `next build` compiled and type-checked it successfully. Requests for /catalog are permanently redirected to the home page.

```ts
import type { NextConfig } from "next";

const nextConfig: NextConfig = {
  async redirects() {
    return [{ source: "/catalog", destination: "/", permanent: true }];
  },
};

export default nextConfig;
```

## Following the redirect, run

I built the demo store with `next build` (Next.js 16.3.8), started it with `next start` and requested pages with curl; the output is copied from that run, trimmed to the relevant lines. The permanent redirect is answered with status 308.

```bash
curl -s -o /dev/null -w "%{http_code} -> %{redirect_url}" http://localhost:3917/catalog
```

Output:

```
308 -> http://localhost:3917/
```

**Quiz:** Which status does a permanent redirect in next.config use?

- [ ] 500
- [ ] 200
- [ ] 404
- [x] 308

*Answer:* 308. Permanent redirects preserve the method and are cached.
