Komplett veiledning for .htaccess-omdirigering i WordPress (2026)

Komplett veiledning for .htaccess-omdirigering i WordPress (2026)

Sist verifisert: 29. august 2026
14 min lesetid
Veiledning
500+ WP-prosjekter
Teknisk SEO

#Introduksjon til Apache mod_rewrite

.htaccess-filen er et av de kraftigste verktøyene i en WordPress-administrators arsenal. Denne konfigurasjonsfilen lar deg overstyre serverinnstillinger på katalognivå, noe som gir deg granulær kontroll over URL-omdirigeringer, tilgangsrestriksjoner og ytelsesoptimaliseringer.

#Hva er mod_rewrite?

mod_rewrite er en Apache-modul som gir en regelbasert omskrivningsmotor for å omskrive forespurte URL-er på flyet. Det er motoren bak WordPress sine pen permalinks og er essensiell for moderne SEO-vennlige URL-strukturer.

Viktige fordeler:

  • SEO-bevaring: Omdiriger gamle URL-er til nye uten å miste søkerangeringer
  • Brukeropplevelse: Sørg for at besøkende alltid når riktig innhold
  • Sikkerhet: Tving HTTPS og blokkere ondsinnede forespørsler
  • Ytelse: Implementer caching-headere og komprimering

#Når du skal bruke 301 vs 302-omdirigeringer

Forståelse av HTTP-statuskoder er avgjørende for riktig SEO-implementering:

OmdirigeringstypeBrukstilfelleSEO-påvirkning
301 PermanentInnhold flyttet permanent, domeneskifter, HTTPS-migrasjonOverfører 90-99% link equity, søkemotorer oppdaterer indeks
302 FunnetMidlertidig vedlikehold, A/B-testing, kortsiktige innholdsflyttingerIngen link equity overført, original URL forblir indeksert
307 MidlertidigStreng HTTP/1.1 midlertidig omdirigering, POST-data bevaringSamme som 302 men bevarer HTTP-metode
308 PermanentStreng HTTP/1.1 permanent omdirigering, POST-data bevaringSamme som 301 men bevarer HTTP-metode

Gylden regel: Hvis endringen er permanent, bruk alltid 301. Å bruke 302 for permanente flyttinger kan betydelig skade dine SEO-rangeringer.


#Vanlige omdirigeringsscenarier

#1. Enkeltside-omdirigeringer

Den enkleste formen for omdirigering flytter én spesifikk URL til en annen:

# Omdiriger en enkeltside (enkel syntaks)
Redirect 301 /gammel-side.html https://www.domenet.com/ny-side.html

# Alternativ ved hjelp av RewriteRule
RewriteEngine on
RewriteRule ^gammel-side\.html$ /ny-side.html [R=301,L]

Når du skal bruke hver:

  • Bruk Redirect 301 for enkle, eksakte URL-treff
  • Bruk RewriteRule når du trenger mønstermatching eller betingelser

#2. Omdirigering av hele nettstedet

Å flytte hele nettstedet til et nytt domene krever nøye håndtering:

# Omdiriger hele nettstedet til nytt domene
Redirect 301 / https://www.nyttdomene.com/

# Bevar full URL-struktur
RewriteEngine on
RewriteBase /
RewriteRule (.*) https://www.nyttdomene.com/$1 [R=301,L]

Viktig: Test alltid med noen få URL-er først før du implementerer nettstedsvide omdirigeringer.

#3. Undermappe til rot (eller omvendt)

Vanlig ved restrukturering av innhold:

# Omdiriger hele nettstedet til en undermappe
Redirect 301 / https://www.domenet.com/undermappe/

# Omdiriger undermappe til et annet nettsted
Redirect 301 /undermappe https://www.domenet.com/

# Ved hjelp av RewriteRule med full sti-bevaring
RewriteEngine on
RewriteRule ^undermappe/(.*)$ /$1 [R=301,L]

#4. Filendringsendringer

Ved migrering fra .html til .php eller implementering av pene permalinks:

# Omdiriger .html til .php
RedirectMatch 301 (.*)\.html$ https://www.domenet.com$1.php

# Fjern .php-utvidelse (gjør URL-er renere)
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

#5. Tving HTTPS (SSL)

Essensielt for sikkerhet og SEO:

# Tving HTTPS - Metode 1 (enkel)
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Tving HTTPS - Metode 2 (med www-håndtering)
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.domenet.com/$1 [L,R=301]

#6. Tving www eller ikke-www

Konsistens i URL-struktur betyr noe for SEO:

# Tving www
RewriteEngine on
RewriteCond %{HTTP_HOST} ^domenet.com [NC]
RewriteRule ^(.*)$ https://www.domenet.com/$1 [L,R=301]

# Tving ikke-www (naken domene)
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.domenet\.com [NC]
RewriteRule ^(.*)$ http://domenet.com/$1 [L,R=301]

#Avanserte Rewrite-regler

#Query String-omdirigeringer

Håndtering av URL-er med parametere krever spesiell oppmerksomhet:

# Omdiriger spesifikk query-parameter
RewriteEngine on
RewriteCond %{QUERY_STRING} id=1
RewriteRule ^index.php$ /sti-til-ny-lokasjon/? [R=301,L]

# Omdiriger med query string-bevaring
RewriteEngine On
RewriteCond %{QUERY_STRING} ^category=([^&]+)
RewriteRule ^index.php$ /kategori/%1/? [R=301,L]

# Fjern query strings helt
RewriteEngine On
RewriteCond %{QUERY_STRING} .
RewriteRule ^$ /? [R=301,L]

Merk: Etterfølgende ? i destinasjons-URL fjerner den originale query string.

#Mønstermatching med Regex

Regulære uttrykk gir kraftig mønstermatching:

# Omdiriger datobaserte URL-er
RewriteEngine On
RewriteRule ^blog/([0-9]{4})/([0-9]{2})/(.+)$ /nyheter/$1/$2/$3 [R=301,L]

# Omdiriger med wildcards
RewriteEngine On
RewriteRule ^produkter/(.*)$ /butikk/$1 [R=301,L]

# Flere mønstermatchinger
RewriteEngine On
RewriteRule ^(blog|nyheter|artikler)/(.+)$ /innhold/$2 [R=301,L]

#Domeneskifte med sti-bevaring

Ved migrering til et helt nytt domene:

# Gammelt domene til nytt domene med full sti
RewriteEngine On
RewriteCond %{HTTP_HOST} ^gammelt-domene.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.gammelt-domene.com$
RewriteRule (.*)$ https://www.nytt-domene.com/$1 [R=301,L]

# Med undermappejustering
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/blog/(.*)$
RewriteRule ^(.*)$ https://www.nyttdomene.com/nyheter/%1 [R=301,L]

#Testing av omdirigeringer på en sikker måte

#Før du går live

  1. Bruk 302 Midlertidig først: Test med 302-omdirigeringer før du gjør dem permanente
  2. Sjekk omdirigeringskjeder: Sørg for at du ikke oppretter omdirigeringsløkker
  3. Test flere scenarier: Sjekk med og uten www, HTTP og HTTPS
  4. Valider med verktøy: Bruk online omdirigeringsjekkere

#Testmetoder

# Bruke curl for å sjekke headere
curl -I http://dittdomene.com/gammel-side

# Følg omdirigeringer med curl
curl -L http://dittdomene.com/gammel-side

# Sjekk spesifikke statuskoder
curl -I -L http://dittdomene.com/gammel-side 2>&1 | grep HTTP

#Online testverktøy

  • Redirect Checker: httpstatus.io
  • HTTP Status: httpstatus.io
  • Google Search Console: Sjekk for crawl-feil etter implementering

#Feilsøking av omdirigeringsløkker

#Vanlige årsaker

  1. Sirkulære referanser: Regel A omdirigerer til B, Regel B omdirigerer tilbake til A
  2. Protokollfeil: HTTP-regel i konflikt med HTTPS-tvinging
  3. WWW-konflikter: www og ikke-www-regler som kjemper mot hverandre
  4. WordPress-konflikter: Plugin-omdirigeringer i konflikt med .htaccess

#Diagnosesteg

# Legg til dette midlertidig for å se hva som skjer
RewriteEngine On
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 3

Merk: Dette krever servernivå-tilgang og bør fjernes etter feilsøking.

#Løsninger

# Forhindre løkker ved å sjekke om allerede omdirigert
RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]

# Spesifikk protokollhåndtering for å unngå løkker
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

#Ytelsespåvirkning av .htaccess-regler

#Forstå kostnaden

Hver RewriteRule legger til prosesserings overhead:

  • Enkle omdirigeringer: Minimal påvirkning (< 1ms)
  • Kompleks Regex: Moderat påvirkning (1-5ms per regel)
  • Flere betingelser: Kumulativ påvirkning (5-20ms+)

#Optimaliseringsbeste praksis

  1. Rekkefølge betyr noe: Plasser mest brukte regler først
  2. Bruk spesifikke mønstre: Mer spesifikke mønstre er raskere
  3. Begrens Regex-kompleksitet: Unngå grådige kvantifikatorer hvor mulig
  4. Vurder servernivå-konfig: For høytrafikk-nettsteder, bruk httpd.conf i stedet
# Optimalisert rekkefølge-eksempel
RewriteEngine On

# Mest vanlige omdirigeringer først
RewriteRule ^wp-admin$ /wp-admin/ [R=301,L]

# Deretter spesifikke mønstre
RewriteRule ^gammelt-produkt/(.*)$ /butikk/$1 [R=301,L]

# Generiske mønstre sist
RewriteRule ^blog/(.*)$ /nyheter/$1 [R=301,L]

#Vurderinger for caching

# Aktiver mod_expires for bedre caching
<IfModule mod_expires.c>
  ExpiresActive On
  ExpiresDefault "access plus 1 month"
</IfModule>

# Aktiver komprimering
<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html text/css application/javascript
</IfModule>

#WordPress-spesifikke vurderinger

#Integrasjon med WordPress Rewrite-regler

WordPress bruker sine egne rewrite-regler i .htaccess. Plasser alltid egne regler før WordPress-blokken:

# BEGIN Egne omdirigeringer
RewriteEngine On
# Dine egne regler her
# END Egne omdirigeringer

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

#Vanlige WordPress-omdirigeringsscenarier

# Omdiriger vedleggssider til foreldreinnlegg
RewriteEngine On
RewriteRule ^attachment/(.*)$ / [R=301,L]

# Omdiriger forfatterarkiver til hjemmeside
RewriteEngine On
RewriteRule ^author/(.*)$ / [R=301,L]

# Omdiriger kategoriarkiver til spesifikk side
RewriteEngine On
RewriteRule ^category/gammel-kategori$ /ny-seksjon/ [R=301,L]

#Sikkerhetsvurderinger

#Beskytte sensitive filer

# Blokker tilgang til sensitive WordPress-filer
<FilesMatch "^\.">
  Order allow,deny
  Deny from all
</FilesMatch>

# Beskytt wp-config.php
<Files wp-config.php>
  order allow,deny
  deny from all
</Files>

# Blokker tilgang til .htaccess selv
<Files .htaccess>
  order allow,deny
  deny from all
</Files>

#Blokkere ondsinnede forespørsler

# Blokker SQL-injeksjonsforsøk
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]

#Komplett referanse: Omdirigeringstyper

#Enkel omdirigeringssyntaks

# Grunnleggende 301-omdirigering
Redirect 301 /gammel /ny

# 302 midlertidig omdirigering
Redirect 302 /vedlikehold /temp-side

# Omdirigering med full URL
Redirect 301 /side http://example.com/ny-side

#RedirectMatch-syntaks

# Mønsterbasert omdirigering
RedirectMatch 301 ^/blog/(.*)$ http://example.com/nyheter/$1

# Case-ufølsom
RedirectMatch 301 (?i)^/gammel-mappe/(.*)$ /ny-mappe/$1

#RewriteRule-syntaks

# Grunnleggende struktur
RewriteRule Mønster Erstatning [Flagg]

# Vanlige flagg:
# [R=301] - Permanent omdirigering
# [R=302] - Midlertidig omdirigering
# [L] - Siste regel (stopp prosessering)
# [NC] - Ingen case (case-ufølsom)
# [QSA] - Query string append
# [NE] - No escape

#Oppsummeringssjekkliste

Før du implementerer omdirigeringer:

  • Test omdirigeringer med 302 før du gjør dem til 301
  • Verifiser at ingen omdirigeringsløkker eksisterer
  • Sjekk mobil- og desktop-oppførsel
  • Test med både www og ikke-www URL-er
  • Verifiser HTTPS-tvinging hvis aktuelt
  • Overvåk Google Search Console for crawl-feil
  • Oppdater interne lenker til å peke til nye URL-er
  • Opprett en sikkerhetskopi av .htaccess-filen

#Avansert feilsøking og optimalisering

#Diagnostisering av omdirigeringsproblemer

Når omdirigeringer ikke fungerer som forventet, følg denne systematiske tilnærmingen:

# Sjekk Apache-feillogger
tail -f /var/log/apache2/error.log

# Sjekk tilgang logger for omdirigeringer
tail -f /var/log/apache2/access.log | grep "301\|302"

Vanlige problemer og løsninger:

ProblemÅrsakLøsning
OmdirigeringsløkkeMotstridende reglerSjekk rekkefølge av regler
404 etter omdirigeringFeil sti i mål-URLVerifiser at målsiden eksisterer
Link equity ikke overførtBruk av 302 i stedet for 301Endre til 301 for permanente flyttinger
Query string taptManglende [QSA]-flaggLegg til [QSA]-flagg
Case-sensitivitetStore/små bokstaver i URLBruk [NC]-flagg

#Optimalisering av .htaccess-ytelse

Hver RewriteRule legger til prosesseringstid. Følg disse retningslinjene for optimal ytelse:

# Plasser generelle regler først (sjeldent brukt)
RewriteCond %{REQUEST_URI} !^/wp-admin
RewriteCond %{REQUEST_URI} !^/wp-content
RewriteCond %{REQUEST_URI} !^/wp-includes

# Mer spesifikke regler sist
RewriteRule ^spesifikk-mappe/(.*)$ /ny-mappe/$1 [R=301,L]

Beste praksis for ytelse:

  1. Unngå regex der det ikke er nødvendig - Bruk enkle Redirect-direktiver når mulig
  2. Sett betingelser så tidlig som mulig - Avvis forespørsler raskt
  3. Bruk [L]-flagg - Stopp prosessering når regel samsvarer
  4. Minimer antall regler - Hver regel koster prosessering
  5. Unngå wildcard der mulig - Spesifikke mønstre er raskere

#WordPress-spesifikke hensyn

WordPress håndterer permalinks gjennom sin egen rewrite-motor. Her er vanlige scenarier:

# Korrekt plassering: Før WordPress-blokken
# BEGIN Custom Redirects
RewriteEngine On
Redirect 301 /gammel-side /ny-side
# END Custom Redirects

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Viktig: Plasser aldri egne regler inne i WordPress-blokken, da de vil bli overskrevet ved permalink-oppdateringer.

#Håndtering av query strings

Omdirigeringer av URL-er med query strings krever spesiell oppmerksomhet:

# Omdiriger kun bestemt query string
RewriteCond %{QUERY_STRING} ^old-param=value$
RewriteRule ^side\.php$ /ny-side? [R=301,L]

# Fjern query string etter omdirigering
RewriteRule ^side\.php$ /ny-side? [R=301,L]

# Behold query string (bruk [QSA] for å legge til)
RewriteRule ^side\.php$ /ny-side [R=301,L,QSA]

#Trailing slash-håndtering

Inkonsistent bruk av etterfølgende skråstrek kan føre til duplikatinnhold:

# Fjern trailing slash (unntatt for mapper)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [R=301,L]

# Legg til trailing slash (unntatt for filer)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])$ /$1/ [R=301,L]

#Testing og validering av omdirigeringer

#Verktøy for testing

Online verktøy:

Lokale verktøy:

# Bruk curl for å sjekke omdirigeringer
curl -I http://example.com/gammel-side

# Følg omdirigeringer og vis alle steg
curl -L -v http://example.com/gammel-side 2>&1 | grep "< HTTP"

# Sjekk med wget
wget --spider --recursive http://example.com/gammel-side

#Automatisert testing

Sett opp regelmessig testing av kritiske omdirigeringer:

#!/bin/bash
# test-redirects.sh

DOMAIN="example.com"
REDIRECTS=("/gammel-side1 /ny-side1"
           "/gammel-side2 /ny-side2"
           "/produkt /category/produkt")

for redirect in "${REDIRECTS[@]}"; do
    FROM=$(echo $redirect | cut -d' ' -f1)
    TO=$(echo $redirect | cut -d' ' -f2)

    STATUS=$(curl -o /dev/null -w "%{http_code}" -s -L "http://${DOMAIN}${FROM}")

    if [ "$STATUS" = "301" ] || [ "$STATUS" = "302" ]; then
        echo "✓ $FROM -> $TO (Status: $STATUS)"
    else
        echo "✗ $FROM -> $TO (Status: $STATUS)"
    fi
done

#Migration-scenarioer

#Domeneskifte

Ved flytting til nytt domene er det kritiske å bevare SEO-verdi:

# Komplett domeneskift med www-håndtering
RewriteEngine On
RewriteBase /

# Fjern www og tving HTTPS
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ http://nytt-domen.no%{REQUEST_URI} [R=301,L]

# Hvis nytt domen har www
RewriteCond %{HTTP_HOST} !^www\.nytt-domen\.no$ [NC]
RewriteRule ^(.*)$ https://www.nytt-domen.no/$1 [R=301,L]

# Omdiriger alle gamle sider
RewriteCond %{HTTP_HOST} gammelt-domen\.no [NC]
RewriteRule ^(.*)$ https://nytt-domen.no/$1 [R=301,L]

#HTTPS-migrasjon

Fullstendig HTTPS-migrasjon med håndtering av blandet innhold:

# Tving HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# Håndter HTTP Strict Transport Security
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

# Omdiriger HTTP til HTTPS for alle subdomener
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

#Strukturendringer i innhold

Ved reorganisering av innholdsstruktur:

# Kategorisk flytting
Redirect 301 /kategori/gammel-kategori /ny-kategori

# Tag-arkiv til kategorisk flytting
RewriteEngine On
RewriteRule ^tag/(.*)$ /topic/$1 [R=301,L]

# Årbasert arkiv til kategorisk
Redirect 301 /2023/ /archive/2023
Redirect 301 /2024/ /archive/2024

# PDF-dokumenter til ny mappe
RedirectMatch 301 ^/dokumenter/(.*)$ https://cdn.nytt-domen.no/dokumenter/$1

#Vanlige feil og hvordan unngå dem

#1. Omdirigeringskjeder

Feil:

# Dårlig: Lager kjede A -> B -> C
Redirect 301 /a /b
Redirect 301 /b /c

Riktig:

# Godt: Direkte omdirigering
Redirect 301 /a /c
Redirect 301 /b /c

#2. Manglende trailing slash

Feil:

# Kan føre til 404 for /mappe/
Redirect 301 /mappe /mappe

Riktig:

# Håndter begge varianter
Redirect 301 /mappe /mappe/
Redirect 301 /mappe/ /mappe/

#3. Ubevart query string

Feil:

# Query string går tapt
RewriteRule ^side$ /ny-side [R=301,L]
# /side?id=5 -> /ny-side (id tapt)

Riktig:

# Behold query string
RewriteRule ^side$ /ny-side [R=301,L,QSA]
# /side?id=5 -> /ny-side?id=5

#4. Motstridende regler

Feil:

# Sistnevnte regel vinner uansett
Redirect 301 /side /ny-side
RewriteRule ^side$ /annet-sted [R=301,L]

Riktig:

# Konsolidér til én regel
Redirect 301 /side /ny-side
# Ikke ha duplikate regler

Husk: En godt planlagt omdirigeringsstrategi bevarer dine SEO-rangeringer og sikrer en sømløs brukeropplevelse under nettstedsmigreringer eller restrukturering.


#WordPress-spesifikke .htaccess-optimaliseringer

#Standard WordPress .htaccess-struktur

WordPress genererer en standard .htaccess-fil når du aktiverer vakre permalinks:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Forståelse av direktivene:

  • RewriteEngine On: Aktiverer rewrite-motoren
  • RewriteBase /: Setter base-URL for alle omskrivinger
  • [L]: Siste flagg - stopp behandling av flere regler

#Legge til egendefinerte regler uten å ødelegge WordPress

Plasser egendefinerte regler før WordPress-reglene:

# BEGIN Egendefinerte regler
Redirect 301 /gammel-side /ny-side
# END Egendefinerte regler

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

#WordPress Multisite-konfigurasjon

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# Legg til trailing slash til /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]

#Sikkerhetsregler for .htaccess

#Blokkere tilgang til sensitive filer

# Blokker tilgang til wp-config.php
<files wp-config.php>
order allow,deny
deny from all
</files>

# Blokker tilgang til .htaccess selv
<files ^\.htaccess>
order allow,deny
deny from all
</files>

# Blokker mappevisning
Options -Indexes

# Blokker tilgang til XML-RPC
<Files xmlrpc.php>
    Require all denied
</Files>

#IP-basert tilgangskontroll

# Begrens admin-tilgang til spesifikke IP-er
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_URI} ^(.*)?wp-admin(.*)? [OR]
    RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)?
    RewriteCond %{REMOTE_ADDR} !^192\.168\.1\.100$
    RewriteRule .* https://%{HTTP_HOST}/ [R=301,L]
</IfModule>

#Ytelsesoptimalisering med .htaccess

#Nettleserbuffering

# Browser Caching (Expires-headers)
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/gif "access plus 1 year"
    ExpiresByType image/png "access plus 1 year"
    ExpiresByType image/webp "access plus 1 year"
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType text/javascript "access plus 1 month"
    ExpiresByType application/javascript "access plus 1 month"
</IfModule>

# GZIP-komprimering
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript
</IfModule>

#Avanserte teknikker

#Betingede omdirigeringer basert på enhet

# Omdiriger mobilbrukere
RewriteCond %{HTTP_USER_AGENT} (android|bb\d+|meego)|mobile|up\.browser|tablet [NC]
RewriteRule ^(.*)$ https://mobil.dittdomene.no/$1 [R=301,L]
# Forhindre hotlinking av bilder
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^https://(www\.)?dittdomene.no [NC]
RewriteRule \.(jpg|jpeg|png|gif|webp)$ - [F]

#Tvinge nedlasting av spesifikke filtyper

# Tving nedlasting av PDF-er
<FilesMatch "\.pdf$">
    Header set Content-Disposition attachment
</FilesMatch>

#Vanlige spørsmål

#Når skal jeg bruke Redirect vs RewriteRule?

  • Bruk Redirect 301 for enkle, eksakte URL-kamper
  • Bruk RewriteRule for komplekse mønsterkamper

#Hvordan teste omdirigeringer før permanent endring?

# Test med 302 først
RewriteRule ^gammel-side$ /ny-side [R=302,L]

# Når bekreftet, endre til 301
RewriteRule ^gammel-side$ /ny-side [R=301,L]

#Hva forårsaker “500 Internal Server Error”?

  • Syntaksfeil
  • Ugyldige regex-mønstre
  • Motstridende regler som skaper løkker

Eksterne ressurser:

Se vår WordPress-hastighetsoptimalisering.

Neste steg

Gjør artikkelen om til faktisk implementering

Denne blokken styrker intern lenking og sender leseren videre til de mest relevante tjenestene og innholdet.

Vil du få dette implementert på nettstedet ditt?

Hvis problemet er Core Web Vitals, treg rendering eller tung WordPress-kjoring, kan jeg definere og gjennomfore optimaliseringen.

Relevant klynge

Utforsk andre WordPress-tjenester og kunnskapsbase

Styrk virksomheten din med profesjonell teknisk støtte innen kjerneområdene i WordPress-økosystemet.

Artikkel-FAQ

Ofte stilte spørsmål

Praktiske svar for å bruke temaet i faktisk arbeid.

SEO-readyGEO-readyAEO-ready1 Q&A
Hva er Komplett veiledning for.htaccess-omdirigering i WordPress (2026)?#
Komplett veiledning for .htaccess-omdirigering i WordPress (2026) forklares her med vekt på nytte, tekniske grenser og praktisk risiko i WordPress-drift.

Trenger du FAQ tilpasset bransje og marked? Vi lager en versjon som støtter dine forretningsmål.

Ta kontakt

Relaterte artikler