Installasjonsguider

301-omdirigering med .htaccess

Vi viser hvordan du setter opp og tester omdirigeringer for www, HTTPS og gamle adresser med .htaccess i Apache uten å miste SEO-verdi, og hvordan du løser løkkefeil.

Aurora YazılımRedaksjonen 6 min lesetid
301-omdirigering med .htaccess
Hvordan lager du en omdirigering med htaccess?

For htaccess-omdirigering må mod_rewrite være slått på i Apache, og reglene skrives etter linjen RewriteEngine On i .htaccess-filen i rotmappen. Ved permanente flyttinger brukes flagget R=301, slik at nettleseren og søkemotorene går over til den nye adressen og den gamle adressens rangeringsverdi i stor grad bevares. Test reglene med curl -I først.

Hva er en 301-omdirigering, og når trenger du den?

En 301-omdirigering er et HTTP-svar som forteller at en adresse er permanent flyttet til en annen. Nettleseren sender den besøkende automatisk til den nye adressen, og søkemotorene bytter med tiden ut den gamle adressen i indeksen med den nye.

302 og 307 er midlertidige omdirigeringer og brukes i kortvarige situasjoner, som en kampanje eller en vedlikeholdsside. Hvis du bruker en midlertidig omdirigering ved en permanent endring, kan søkemotoren fortsette å beholde den gamle adressen i indeksen.

Behovet for omdirigering oppstår som regel når du flytter siden til HTTPS, velger mellom versjonen med og uten www, endrer sideadresser, bytter domenenavn eller går over til en ny nettside. Ved fornyelse av en nettside er det å koble hver gamle adresse til riktig ny en av de mest kritiske delene av arbeidet med SEO-vennlig webdesign.

Forutsetninger: mod_rewrite og AllowOverride

.htaccess-filen fungerer bare på Apache og Apache-kompatible servere (som LiteSpeed). Nginx leser ikke denne filen. Bruker du Nginx, må du skrive de samme reglene i serverblokken. Detaljene står i guiden vår om installasjon av Nginx.

På delt hosting er mod_rewrite vanligvis slått på, og du kan gå rett på reglene. Hvis du drifter din egen server, må du aktivere modulen og slå på verdien AllowOverride i virtualhost-innstillingen. Ellers ignorerer Apache .htaccess-filen helt.

bashUbuntu / Debian
sudo a2enmod rewrite
sudo nano /etc/apache2/sites-available/ornek.com.conf
sudo apache2ctl configtest
sudo systemctl restart apache2
apacheInne i virtualhost
<Directory /var/www/ornek.com/public_html>
    AllowOverride All
    Require all granted
</Directory>

Omdirigering til HTTPS og www

En nettside kan åpnes med minst fire ulike adresser: http og https, med og uten www. Den reneste løsningen er å velge én hovedadresse og sende de tre andre til den i ett enkelt steg. Kjedede omdirigeringer (først til HTTPS, så til www) er både trege og sløser med krypebudsjettet.

Før du setter opp omdirigering til HTTPS, må du sørge for at serveren har et gyldig sertifikat. Installasjonen har vi forklart i guiden om installasjon av SSL-sertifikat. Hvis du omdirigerer til HTTPS uten sertifikat, møter de besøkende en sikkerhetsadvarsel.

Hvorfor HTTPS ikke lenger er et valg, men et krav, og hvilke typer sertifikater som finnes, har vi forklart i detalj i artikkelen hva er et SSL-sertifikat. Når du har valgt hovedadressen, må du forsikre deg om at kanoniske tagger, sitemap og interne lenker også bruker denne adressen. Ellers sender du motstridende signaler til søkemotoren.

Tving til uten www og HTTPS

Regelen under sender forespørselen i ett steg til https-adressen uten www hvis HTTPS er av eller adressen starter med www. Den siste betingelsen fanger opp domenenavnet, og %1 bruker den fangede verdien.

apache
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]

Tving til med www og HTTPS

Hvis hovedadressen din er versjonen med www, skriver du regelen slik.

apache
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]

Flytting av gamle sider, mapper og domener

Når adressestrukturen endres, må hver gamle side sendes til den nye siden som ligger nærmest i innhold. Å sende alle gamle adresser til forsiden virker enkelt, men søkemotorer tolker det som oftest som soft 404, og verdien av den gamle siden går tapt.

Rekkefølgen på reglene er viktig: spesifikke regler øverst og generelle nederst. Apache behandler reglene ovenfra og ned, og flagget L stopper behandlingen i den runden etter at en regel har truffet.

Ved store flyttinger starter du med å lage et omdirigeringskart: en tabell med gammel adresse til venstre og ny adresse til høyre, og ved siden av trafikken og antall lenker siden har. Listen veileder deg både når du skriver reglene og når du kontrollerer dem én etter én etter lansering. For sider uten tilsvarende innhold som faktisk er fjernet, er et 410- eller 404-svar et mer ærlig signal enn en omdirigering.

  • Ved enkle flyttinger av én enkelt side kan du også bruke Redirect 301-linjen fra mod_alias, men å la være å blande den med RewriteRule i samme fil unngår overraskelser med rekkefølgen.
  • Hent listen over gamle adresser fra Search Console og det gamle sitemapet. Ikke hopp over noen viktige sider.
  • Ved bytte av domenenavn bør du også bruke verktøyet Endring av adresse i Search Console.
apache
RewriteEngine On

# Tek sayfa
RewriteRule ^eski-sayfa\.html$ /yeni-sayfa/ [R=301,L]

# Flytting av mappe: /haberler/... -> /blog/...
RewriteRule ^haberler/(.*)$ /blog/$1 [R=301,L]

# Omdirigering uten spørrestrengen
RewriteCond %{QUERY_STRING} ^id=15$
RewriteRule ^urun\.php$ /urunler/deri-canta/ [R=301,L,QSD]

# Endring av domenenavn (i .htaccess-filen til det gamle domenet)
RewriteCond %{HTTP_HOST} ^(www\.)?eskialan\.com$ [NC]
RewriteRule ^(.*)$ https://yenialan.com/$1 [R=301,L]

Fjerne .html-endelsen

På statiske nettsider kan du ønske rene adresser som /hakkimizda i stedet for /hakkimizda.html. Det krever to regler: den ene sender forespørsler med endelse til adressen uten endelse med 301, og den andre kobler forespørselen uten endelse til den aktuelle .html-filen i bakgrunnen.

Det er viktig å bruke %{THE_REQUEST} i den første regelen. Denne variabelen inneholder den opprinnelige forespørselen nettleseren sendte, og hindrer at den interne omskrivingen blir til en ny omdirigering og skaper en uendelig løkke.

apache
RewriteEngine On

# /sayfa.html -> /sayfa (301)
RewriteCond %{THE_REQUEST} \s/([^.\s]+)\.html[\s?] [NC]
RewriteRule ^ /%1 [R=301,L]

# Koble forespørselen /sayfa til filen sayfa.html (intern omskriving)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+)$ $1.html [L]

Hvordan tester jeg omdirigeringene?

Nettlesere lagrer 301-svaret i hurtigbufferen. Når du rettet en feil regel, kan nettleseren fortsette å huske den gamle omdirigeringen. Bruk derfor R=302 først under testing, og bytt til 301 når alt stemmer. Det mest pålitelige er å teste i et privat vindu eller fra kommandolinjen.

curl-kommandoen viser tydelig svarkoden og Location-headeren. Med parameteren -L kan du følge hele kjeden, og hvis det er flere steg, kan du redusere dem til én enkelt omdirigering.

  • I Windows PowerShell skriver du curl.exe i stedet for curl. Ellers kan en annen kommando kjøres.
  • For å prøve lokalt kan du bruke en pakke med Apache, som XAMPP.
  • Etter lansering følger du med på rapportene om omdirigering og indeksering i Search Console i noen uker.
bashmacOS, Linux og Windows 10/11
curl -I http://www.ornek.com/eski-sayfa.html
# For å se hele kjeden
curl -sIL http://ornek.com | grep -iE '^(HTTP|location)'

Vanlige feil og løsninger

De fleste omdirigeringsproblemer viser seg med noen kjente symptomer. Apache-feilloggen (på Ubuntu /var/log/apache2/error.log) forteller som regel på hvilken linje problemet ligger.

SymptomMulig årsak og løsning
500 Internal Server ErrorSkrivefeil, eller mod_rewrite er av. Rull tilbake den sist tilføyde linjen og se i feilloggen.
ERR_TOO_MANY_REDIRECTSReglene omdirigerer til hverandre, eller HTTPS oppdages ikke bak en proxy.
Regelen virker ikke i det hele tattAllowOverride None, eller filen ligger i feil mappe. Kontroller virtualhost-innstillingen.
Den nye adressen gir 404Målstien er feil eller skrevet relativt. Legg til / foran målet.
Rettelsen vises ikkeNettleseren bruker den gamle 301-en fra hurtigbufferen. Test i et privat vindu eller med curl.

Bak Cloudflare eller en lastbalanserer

Hvis SSL avsluttes i proxyen, ser forespørselen som kommer til serveren alltid ut som HTTP, og betingelsen %{HTTPS} off fører til en uendelig løkke. Kontroller i så fall X-Forwarded-Proto-headeren proxyen sender, eller sett opp HTTPS-omdirigeringen i proxyens panel.

apache
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Vanlige spørsmål

01Overfører en 301-omdirigering all SEO-verdi?

En permanent omdirigering til riktig mål overfører mesteparten av signalene fra den gamle adressen til den nye. Likevel kan det komme midlertidige svingninger i plasseringene i overgangsperioden. Omdirigeringer til mål som ikke samsvarer i innhold, fører til tap av verdi.

02Hvor lenge bør jeg beholde omdirigeringene?

Fjern ikke omdirigeringene så lenge andre nettsider lenker til de gamle adressene. I praksis er det tryggest å beholde dem i minst ett år, og på ubestemt tid for viktige sider.

03Trenger man omdirigering for avsluttende skråstrek også?

Søkemotorer kan se /hakkimizda og /hakkimizda/ som to ulike sider. Å bestemme hvilken du vil bruke og sende den andre dit med 301 hindrer at samme innhold indekseres på to adresser. Det viktige er at valget er konsekvent på hele nettsiden.

04Gjør mange omdirigeringer nettsiden tregere?

Noen hundre regellinjer gir ingen merkbar treghet, men fordi .htaccess leses ved hver forespørsel, gir tusenvis av linjer ekstra belastning. I den størrelsen er det mer effektivt å flytte reglene til virtualhost-konfigurasjonen eller en tilordningsfil med RewriteMap.

Riktig oppsatte 301-omdirigeringer sørger for at arbeidet og trafikken din ikke går tapt når adresser endres. Vil du kjøre kartlegging av gamle adresser, omdirigeringer og tekniske SEO-kontroller samlet ved en nettsidefornyelse, kan du se på tjenesten vår for SEO-vennlig webdesign, og på arbeidet med hastighet og ytelse for forbedringer etter lansering. For jevnlig oppfølging av søkedataene dine kan du bruke støtten vår innen SEO og analyse, og ved flyttingsprosjekter for nettbutikkplattformer kan du jobbe sammen med webdesignteamet vårt.