500 words
3 minutes
How to Fix Astro Redirect Settings When They Don't Work [Static Site SEO]

How to Fix Astro Redirect Settings When They Don’t Work [Static Site SEO]#

The other day, I was tinkering with the article-related system of my Astro (SSG) site and mistakenly published an article with a URL different from what I intended.

It didn’t become a major problem, but one article got registered in Google Search Console with that URL…

At first, I thought time would solve it and tried to handle it by just reverting the URL, but apparently that’s nonsensical from an SEO perspective… reluctantly I decided to set up redirects.

When I tried to implement redirects in Astro, I stumbled, so I’m summarizing that here.

Target audience: Those building static sites with Astro and struggling with redirect settings / Those hosting on Cloudflare or Vercel


Why Redirects Are Important for SEO#

  • Avoiding duplicate content: When incorrect and correct URLs coexist, evaluation gets dispersed!!
  • Link equity inheritance: With 301/308 redirects, you can transfer backlink evaluation to the new URL!!
  • Crawl efficiency optimization: Reduce unnecessary 404s and save crawl budget!!
TIP

Google distinguishes between “permanent (301/308)” and “temporary (302)” redirects to transfer evaluation. Choose the status code according to your purpose!


Prerequisites#

  • Astro v4 (SSG mode)
  • Cloudflare Pages hosting (confirmed to work similarly on Vercel)

Method ①: Define redirects in astro.config.*#

This method adds redirects to the Astro configuration file. It’s officially recommended and easy to manage (important), so it’s sufficient for a small number of redirects!!

export default defineConfig({
  redirects: {
    // ① Path movement within the same site (default 301)
    "/posts/old-slug": "/posts/new-slug",

    // ② Dynamic routes are also OK (parameter names must match)
    "/blog/[...slug]": "/articles/[...slug]",

    // ③ When you want to specify status code explicitly
    "/note": {              // 308 = permanent POST allowed
      status: 308,
      destination: "/posts/note"
    },

    // ④ To external URL
    "/docs": "https://example.com/docs"
  }
});
  • Advantages: Complete within Astro. HTML with <meta http-equiv="refresh"> is automatically generated during SSG build.
  • Disadvantages: Writing many rules bloats the configuration file.

Method ②: Using vercel.json (Also available on Cloudflare Pages)#

If you need more detailed conditional branching or hostname-based routing, vercel.json is convenient.

{
  "redirects": [
    {
      "source":  "/posts/old-slug",
      "destination": "/posts/new-slug",
      "permanent": true         // 308
    },
    {
      "source":      "/blog/:year/:month/:slug",
      "destination": "/posts/:slug",
      "statusCode":  301
    },
    {
      "source":      "/docs/:path*",
      "destination": "https://example.com/docs/:path*",
      "permanent":   true
    },
    {
      "source": "/:path*",
      "has": [
        { "type": "host", "value": "old.example.com" }
      ],
      "destination": "/legacy/:path*",
      "statusCode": 302
    }
  ]
}
  • Advantages
    • Advanced features like wildcards and host conditions.
    • Configuration files can be separated for easier maintenance.
  • Disadvantages
    • Depends on trailingSlash settings, requiring attention to trailing slash forced removal behavior.
WARNING

Redirects defined in vercel.json remove trailing slashes by default. If you’ve specified trailingSlash: "always", consistency verification is required!


Which Should You Choose?#

CaseRecommended Method
Small number (~10 or so) of static redirectsMethod ① Astro configuration
Dynamic paths, subdomain conditions, bulk registrationMethod ② vercel.json

For my site, since I always add trailing slashes, I adopted Method ①.


Summary#

  • Choose the correct status code to transfer evaluation without loss.
  • Astro’s standard redirects is the most convenient.
  • For advanced conditional branching or bulk settings, vercel.json is useful. However, pay attention to compatibility with trailingSlash.

To prevent incorrect URLs from being indexed, don’t forget pre-publication checks and redirect settings!!!

Here’s how to change trailingSlash settings in Astro!!

Preview image for 設定方法

設定方法

docs.astro.build


How to Fix Astro Redirect Settings When They Don't Work [Static Site SEO]
https://naonao-na.com/en/posts/astro-redirect-seo/
Author
[object Object]
Published at
2025-05-23