308 Permanent Redirect
HTTP/1.1 permanent redirect der garanterer samme HTTP-metode bevares
Nøglefakta om 308 Redirect
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).
Aspekt | 301 | 308 |
---|---|---|
HTTP Version | HTTP/1.0 | HTTP/1.1 |
Varighed | Permanent | Permanent |
Metode preservation | Ikke garanteret | Garanteret |
POST request | Kan blive til GET | Forbliver POST |
SEO-værdi | ~100% | ~100% |
Browser support | Universel | Moderne 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