Tilbage til Redirects
➡️

308 Permanent Redirect

HTTP/1.1 permanent redirect der garanterer samme HTTP-metode bevares

Nøglefakta om 308 Redirect

Type: Permanent redirect (HTTP/1.1)
Metode: Bevarer HTTP-metode
SEO-værdi: ~100% overføres
Cache: Ja, browser cacher

308 vs 301: Nøgleforskelle

Permanent redirect med method preservation

308 er den moderne HTTP/1.1 version af 301 redirect. Ligesom 301 er den permanent, men 308 garanterer at HTTP-metoden bevares (POST forbliver POST).

Aspekt301308
HTTP VersionHTTP/1.0HTTP/1.1
VarighedPermanentPermanent
Metode preservationIkke garanteretGaranteret
POST requestKan blive til GETForbliver POST
SEO-værdi~100%~100%
Browser supportUniverselModerne browsers

Hvornår skal du bruge 308?

Permanent API Endpoint Changes

Når du permanent ændrer API endpoints der bruger POST, PUT, PATCH eller DELETE.

POST /api/v1/users → 308 → POST /api/v2/users

REST API Migration

Permanent migration af RESTful APIs til nye versioner eller strukturer.

PUT /old-api/resource → 308 → PUT /new-api/resource

Form Endpoint Changes

Permanent redirect af form submission endpoints.

POST /old-contact-form → 308 → POST /contact

Webhook URL Changes

Permanent redirect af webhook endpoints hvor POST data skal bevares.

POST /webhooks/old → 308 → POST /webhooks/new

Implementation

Apache (.htaccess)

# 308 redirect
RewriteEngine On
RewriteRule ^api/v1/(.*)$ /api/v2/$1 [R=308,L]

# Med fuld URL
Redirect 308 /old-endpoint https://example.com/new-endpoint

Nginx

location /api/v1/ {
    return 308 /api/v2$request_uri;
}

# Specifik endpoint
location = /old-endpoint {
    return 308 https://example.com/new-endpoint;
}

Next.js

// next.config.js
module.exports = {
  async redirects() {
    return [
      {
        source: '/api/v1/:path*',
        destination: '/api/v2/:path*',
        permanent: true,
        statusCode: 308, // Explicit 308
      },
    ]
  },
}

// API Route
export async function POST(request) {
  return NextResponse.redirect(
    new URL('/api/v2/endpoint', request.url),
    { status: 308 }
  );
}

Express.js

app.post('/api/v1/users', (req, res) => {
  res.redirect(308, '/api/v2/users');
});

// Med middleware
app.use('/api/v1', (req, res) => {
  const newUrl = req.url.replace('/api/v1', '/api/v2');
  res.redirect(308, newUrl);
});

SEO-påvirkning

Permanent redirect

308 har samme SEO-effekt som 301. Søgemaskiner erstatter den gamle URL med den nye i indexet. Fuld overførsel af link juice og SEO-værdi.

Google behandling

Google behandler 308 identisk med 301 for SEO-formål. Vælg 308 når HTTP-metode skal bevares, ellers er 301 mere universelt understøttet.

Indexering

Den nye URL vil erstatte den gamle i søgeindexet. Dette kan tage nogle dage til uger.

301 vs 308: Hvornår bruger du hvilken?

Brug 301 til:

  • • Standard website redirects
  • • GET requests (page views)
  • • HTTP → HTTPS migration
  • • WWW normalisering
  • • URL structure changes
  • • Maksimal browser kompatibilitet

Brug 308 til:

  • • API endpoint changes
  • • POST/PUT/PATCH/DELETE requests
  • • Form submissions
  • • Webhook URLs
  • • RESTful API migrations
  • • Når metode-bevarelse er kritisk

Best Practices

✓ Gør dette

  • • Brug 308 for API endpoint migrations
  • • Test at POST data bevares korrekt
  • • Opdater API dokumentation
  • • Behold redirect permanent
  • • Informer API consumers om changes
  • • Monitor error rates efter deployment

✗ Undgå dette

  • • Brug ikke 308 til simple page redirects
  • • Antag ikke alle browsers understøtter det
  • • Fjern ikke gamle endpoints for tidligt
  • • Glem ikke at opdatere client kode
  • • Mix ikke 301 og 308 uden grund
  • • Ignorer ikke API versioning