301-omdirigering med .htaccess
Vi visar hur du sätter upp omdirigeringar för www, HTTPS och gamla adresser med .htaccess i Apache, så att SEO-värdet bevaras, hur du testar dem och löser loopfel.

För omdirigering med htaccess måste mod_rewrite vara aktiverat i Apache, och reglerna skrivs i .htaccess-filen i sajtens rotmapp efter raden RewriteEngine On. Vid permanenta flyttar används flaggan R=301, så att webbläsare och sökmotorer går över till den nya adressen och den gamla adressens rankingvärde i stort sett bevaras. Testa reglerna först med curl -I.
Vad är en 301-omdirigering och när behövs den?
En 301-omdirigering är ett HTTP-svar som talar om att en adress permanent har flyttats till en annan. Webbläsaren skickar besökaren automatiskt till den nya adressen, och sökmotorerna byter med tiden ut den gamla adressen i indexet mot den nya.
302 och 307 är tillfälliga omdirigeringar och används vid kortvariga lägen, som en kampanj- eller underhållssida. Om du använder en tillfällig omdirigering vid en permanent ändring kan sökmotorn fortsätta att behålla den gamla adressen i indexet.
Behovet av omdirigering uppstår oftast när du flyttar sajten till HTTPS, väljer mellan versionen med eller utan www, ändrar sidadresser, byter domän eller går över till en ny sajt. Vid sajtförnyelser är det ett av de mest kritiska stegen i SEO-anpassad webbdesign att koppla ihop de gamla adresserna en och en.
Förutsättningar: mod_rewrite och AllowOverride
.htaccess-filen fungerar bara på Apache och Apache-kompatibla servrar (som LiteSpeed). Nginx läser inte den här filen; använder du Nginx måste du skriva samma regler i serverblocket, vilket vi går igenom i guiden Installera Nginx.
På delat webbhotell är mod_rewrite oftast aktiverat och du kan gå direkt till reglerna. Om du driver din egen server måste du aktivera modulen och slå på AllowOverride i inställningen för den virtuella värden; annars ignorerar Apache .htaccess-filen helt.
sudo a2enmod rewrite
sudo nano /etc/apache2/sites-available/ornek.com.conf
sudo apache2ctl configtest
sudo systemctl restart apache2<Directory /var/www/ornek.com/public_html>
AllowOverride All
Require all granted
</Directory>Omdirigering till HTTPS och www
En sajt kan öppnas med minst fyra olika adresser: http och https, med och utan www. Det renaste är att välja en enda huvudadress och omdirigera de andra tre till den i ett enda steg. Kedjade omdirigeringar (först till HTTPS, sedan till www) är både långsamma och slösar med crawlbudgeten.
Innan du går över till HTTPS-omdirigering ska du se till att servern har ett giltigt certifikat; installationen går vi igenom i guiden Installera SSL-certifikat. Om du omdirigerar till HTTPS utan certifikat möts besökaren av en säkerhetsvarning.
Varför HTTPS inte längre är ett val utan ett krav, och vilka typer av certifikat som finns, förklarar vi i detalj i inlägget Vad är ett SSL-certifikat. När du har valt huvudadress ska du se till att kanoniska taggar, sajtkartan och interna länkar också använder den adressen; annars skickar du motstridiga signaler till sökmotorn.
Tvinga fram HTTPS utan www
Regeln nedan omdirigerar förfrågan i ett enda steg till https-adressen utan www, om HTTPS är avstängt eller adressen börjar med www. Det sista villkoret fångar domännamnet, och %1 använder det fångade värdet.
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]Tvinga fram HTTPS med www
Om din huvudadress är versionen med www skriver du regeln så här.
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [L,R=301]Flytt av gamla sidor, mappar och domäner
När adressstrukturen ändras måste varje gammal sida omdirigeras till den nya sida som innehållsmässigt ligger närmast. Att omdirigera alla gamla adresser till startsidan verkar enkelt, men sökmotorer tolkar det ofta som en soft 404, och den gamla sidans värde går förlorat.
Reglernas ordning spelar roll: de specifika reglerna ska ligga överst och de allmänna längre ner. Apache bearbetar reglerna uppifrån och ned, och flaggan L avbryter bearbetningen i den omgången efter den matchande regeln.
Vid stora flyttar bör du börja med att ta fram en omdirigeringskarta: en tabell med gammal adress till vänster, ny adress till höger och bredvid sidans trafik och antal länkar. Listan vägleder dig både när du skriver reglerna och när du kontrollerar dem en och en efter lansering. För sidor som verkligen tagits bort och saknar motsvarighet är svaret 410 eller 404 en ärligare signal än en omdirigering.
- Vid enkla flyttar av en enda sida kan du också använda raden Redirect 301 i mod_alias, men om du undviker att blanda den med RewriteRule i samma fil slipper du överraskningar kring ordningen.
- Ta fram listan över gamla adresser från Search Console och den gamla sajtkartan; hoppa inte över någon viktig sida.
- Vid domänbyte bör du också använda verktyget Ändring av adress i Search Console.
RewriteEngine On
# Tek sayfa
RewriteRule ^eski-sayfa\.html$ /yeni-sayfa/ [R=301,L]
# Flytta mapp: /haberler/... -> /blog/...
RewriteRule ^haberler/(.*)$ /blog/$1 [R=301,L]
# Omdirigering med borttagen frågesträng
RewriteCond %{QUERY_STRING} ^id=15$
RewriteRule ^urun\.php$ /urunler/deri-canta/ [R=301,L,QSD]
# Byte av domännamn (i den gamla domänens .htaccess-fil)
RewriteCond %{HTTP_HOST} ^(www\.)?eskialan\.com$ [NC]
RewriteRule ^(.*)$ https://yenialan.com/$1 [R=301,L]Ta bort filändelsen .html
På statiska sajter kanske du vill ha rena adresser som /om-oss i stället för /om-oss.html. För det behövs två regler: den ena omdirigerar förfrågningar med filändelse till adressen utan ändelse med 301, och den andra kopplar förfrågan utan ändelse till motsvarande .html-fil i bakgrunden.
Det är viktigt att använda %{THE_REQUEST} i den första regeln; variabeln innehåller den ursprungliga förfrågan som webbläsaren skickade och hindrar att den interna omskrivningen blir en ny omdirigering och skapar en oändlig loop.
RewriteEngine On
# /sayfa.html -> /sayfa (301)
RewriteCond %{THE_REQUEST} \s/([^.\s]+)\.html[\s?] [NC]
RewriteRule ^ /%1 [R=301,L]
# Koppla begäran /sayfa till filen sayfa.html (intern omskrivning)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+)$ $1.html [L]Hur testar jag omdirigeringarna?
Webbläsare cachar 301-svaret. När du rättar en felaktig regel kan webbläsaren fortsätta att komma ihåg den gamla omdirigeringen; använd därför först R=302 under testet och byt till 301 när allt stämmer. Det säkraste är att testa i ett privat fönster eller från kommandoraden.
Kommandot curl visar tydligt svarskoden och Location-huvudet. Med parametern -L kan du följa hela kedjan, och om det finns flera steg kan du korta ner dem till en enda omdirigering.
- I Windows PowerShell skriver du curl.exe i stället för curl; annars kan ett annat kommando köras.
- För att prova lokalt kan du använda ett paket med Apache, som XAMPP.
- När sajten är live bör du följa rapporterna om omdirigering och indexering i Search Console i några veckor.
curl -I http://www.ornek.com/eski-sayfa.html
# För att se hela kedjan
curl -sIL http://ornek.com | grep -iE '^(HTTP|location)'Vanliga fel och lösningar
De flesta problem med omdirigeringar visar sig genom några välkända symptom. Apaches felloggen (på Ubuntu /var/log/apache2/error.log) brukar tala om på vilken rad problemet finns.
| Symptom | Trolig orsak och lösning |
|---|---|
| 500 Internal Server Error | Stavfel eller så är mod_rewrite avstängt; ångra den senast tillagda raden och titta i felloggen. |
| ERR_TOO_MANY_REDIRECTS | Reglerna omdirigerar till varandra, eller så upptäcks inte HTTPS bakom en proxy. |
| Regeln fungerar inte alls | AllowOverride None eller filen ligger i fel mapp; kontrollera inställningen för den virtuella värden. |
| Den nya adressen ger 404 | Målsökvägen är fel eller skriven relativt; lägg till / i början av målet. |
| Rättningen syns inte | Webbläsaren använder den gamla 301:an från cachen; testa i ett privat fönster eller med curl. |
Bakom Cloudflare eller en lastbalanserare
Om SSL avslutas hos proxyn ser förfrågan som når servern alltid ut som HTTP, och villkoret %{HTTPS} off leder till en oändlig loop. Kontrollera då huvudet X-Forwarded-Proto som proxyn skickar, eller gör HTTPS-omdirigeringen i proxyns panel.
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]Vanliga frågor
01Flyttar en 301-omdirigering SEO-värdet helt?
En permanent omdirigering till rätt mål överför större delen av den gamla adressens signaler till den nya. Under övergångsperioden kan placeringarna ändå svänga tillfälligt; omdirigeringar till mål vars innehåll inte matchar leder däremot till värdeförlust.
02Hur länge ska jag behålla omdirigeringarna?
Ta inte bort omdirigeringarna så länge andra sajter länkar till de gamla adresserna. I praktiken är det säkrast att behålla dem i minst ett år, och för viktiga sidor utan tidsgräns.
03Behövs omdirigering även för snedstrecket på slutet?
Sökmotorer kan se adresserna /om-oss och /om-oss/ som olika sidor. Om du bestämmer dig för vilken du använder och omdirigerar den andra till den med 301 undviker du att samma innehåll indexeras på två adresser. Det viktiga är att valet är konsekvent på hela sajten.
04Gör många omdirigeringar sajten långsammare?
Några hundra rader regler orsakar ingen märkbar fördröjning, men eftersom .htaccess läses vid varje förfrågan ger tusentals rader extra belastning. I den storleken är det effektivare att flytta reglerna till konfigurationen för den virtuella värden eller till en mappningsfil med RewriteMap.
Korrekt uppsatta 301-omdirigeringar gör att ditt arbete och din trafik inte går förlorade vid en adressändring. Om du vill driva kartläggningen av gamla adresser, omdirigeringar och tekniska SEO-kontroller tillsammans vid en sajtförnyelse kan du läsa om vår tjänst SEO-anpassad webbdesign, och om vårt arbete med hastighet och prestanda för förbättringar efter lansering. Du kan också få hjälp av vårt stöd för SEO och analys för att följa sökdatan regelbundet, och i flyttprojekt för vår e-handelsplattform kan du samarbeta med vårt team för webbdesign.


