PHP redirect – Ultimativ guide til PHP redirect 301
Den ultimative guide til PHP redirect er i en serie af indlæg som dækker redirects næsten fra A-Å.
En PHP redirect er en teknik, der bruges til at omdirigere en bruger fra en webadresse til en anden. Det er nyttigt, når man fx ønsker at sende brugeren til en specifik side efter en handling er udført, f.eks. når en bruger har udfyldt en formular eller logget ind på en hjemmeside. PHP-redirect bruger header-funktionen til at sende en HTTP-omdirigeringsstatuskode til browseren, som derefter skifter til den angivne webadresse.

Ultimativ guide til danske redirects
Dette indlæg er en del af en større samling af tips og viden om redirect
PHP redirect checker – Omdirigerer din PHP korrekt?
Test din PHP redirect her, og se hvordan din hjemmeside redirecter, med den PHP kode som du har lavet. Kopier urlen ind her, så du kan se om din PHP omdirigering virker
PHP Redirect
At omdirigere via PHP kan i mange tilfælde være vejen du skal gå, ikke mindst fordi det er den metode der har mindst indflydelse på hjemmesidens generelle performance.
Til forskel for htaccess metoden som belaster hele tiden og ved hvert kald læs mere om htaccess, så belaster PHP kun når selve omdirigeringen sker. Hvilket uden tvivl vil få sidens performance til at være bedre.
Hvad er formålet med en PHP redirect?
Formålet med at bruge en PHP redirect er at omdirigere brugerne fra en side til en anden side eller en anden URL. Dette kan være nyttigt i forskellige situationer:
- Fejlhåndtering: Hvis en bruger prøver at få adgang til en side, der ikke findes, kan en PHP redirect bruges til at sende dem til en fejlsideside eller en anden relevant side.
- Login og autentificering: Efter at en bruger har logget ind, kan de omdirigeres til en sikker side eller deres personlige profilside ved hjælp af en PHP redirect.
- Formularbehandling: Efter at en bruger har indsendt en formular, kan en PHP redirect bruges til at sende dem til en confirmationsside eller en takkeside.
- Forbedre brugervenligheden: En PHP redirect kan også bruges til at omdirigere brugere til en bestemt side baseret på deres handlinger eller valg, hvilket kan forbedre brugeroplevelsen og give en mere målrettet og personlig oplevelse.
Generelt bruges en PHP redirect til at styre brugernes flow og sikre, at de får relevante sider eller informationer, de har brug for.
Permanent og midlertidig redirect i PHP – Hvad er forskellen?
I PHP er der forskel på en permanent og midlertidig redirect, ligesom der er med andre redirects.
En permanent redirect (301 redirect) angiver, at den oprindelige side er blevet permanent flyttet til en anden adresse. Det betyder, at alle fremtidige anmodninger fra klienten vil blive sendt direkte til den nye adresse. Det sætter også søgemaskiner i stand til at opdatere deres indekser og viste links til den nye adresse. En 301 redirect kan implementeres ved hjælp af header-funktionen i PHP som følger:
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://domæne.dk/ny-adresse");
En midlertidig redirect (302 redirect) angiver, at den oprindelige side midlertidigt er flyttet til en anden adresse. Det betyder, at klienten kun midlertidigt anmodes om at besøge den nye adresse. Hver efterfølgende anmodning vil stadig sendes til den oprindelige adresse. En 302 redirect kan også implementeres ved hjælp af header-funktionen i PHP som følger:
header("HTTP/1.1 302 Found");
header("Location: http://domæne.dk/ny-adresse");
Så forskellen mellem en permanent og midlertidig redirect i PHP er, at en permanent redirect signalerer en permanent flytning til en ny adresse, mens en midlertidig redirect signalerer en midlertidig flytning til en ny adresse. Dog vil man typisk bruge 302 redirect til handlingsbaserede redirects, som fx redirect til takkeside efter formudfyldning, da browseren helst ikke skal tro at adressen hvorfra formen er udfyldt, er permanent flyttet.
PHP redirect Generelt
PHP redirect (basal)
header ("Location: http://domæne.dk/");
exit;
Men vær obs på at denne kun laver en 302 (midlertidig) PHP redirect.
Vil du gerne bestemme hvilken type omdirigering du vil lave, fx PHP 301 redirect, 404 etc. skal du have yderligere en header på:
301 Header
header ("HTTP/1.1 301 Moved Permanently");
header ("Location: http://domæne.dk/");
exit;
Husk også at en omdirigering via PHP, skal ske før alt andet bliver skrevet ud. Så har du whitespace, echo, print, print_r() etc. før en omdirigering, vil den ikke virke og lave en fejl som fortæller at headeren er allerede sat.
Der er selvfølgelig undtagelser, hvis du fx bruger output buffering på hele indholdet, så vil du opleve at det er ligegyldigt hvor i dokumentet du laver en redirect med PHP.
PHP redirect alt der ikke er hoveddomænet til hoveddomænet
$hoveddomain = 'domæne.dk';
if($_SERVER['HTTP_HOST'] != $hoveddomain){
header( 'HTTP/1.1 301 Moved Permanently' );
header( 'Location: http://'.$hoveddomain.$_SERVER['REQUEST_URI'] );
exit;
}
Redirect via php, specifik side til ny destination
// statisk 301 redirect via PHP
if($_SERVER['REQUEST_URI'] == '/sti/til/gammel/url.html'){
header( 'HTTP/1.1 301 Moved Permanently' );
header( 'Location: http://domæne.dk/sti/til/ny/url.html' );
exit;
}
Redirect alt der er i en bestemt mappe
// Redirect alt der er i mappen "/sti/til/gammel/"
if(strpos($_SERVER['REQUEST_URI'],'/sti/til/gammel/')){
header( 'HTTP/1.1 301 Moved Permanently' );
header( 'Location: http://domæne.dk/sti/til/ny/url.html' );
exit;
}
Redirect for marketers og affiliates
Leder du efter en god og hurtig løsning til at få omdirigeret dine sider fra internt link til eksternt link, samtidig med at Google ikke må indeksere det interne link. Så er der her en løsning, som har minimal indflydelse på hjemmesidens hastighed. Og ikke mindst kan klare flere tusinde af slagsen, hvis dette er nødvendigt.
En hurtig og god løsning på redirect
Opret en mappe via FTP, kald den hvad du lyster, men sørg for at det ikke er et navn du bruger på din hjemmeside. du kunne kalde den “go”.
I den mappe opretter du en PHP fil, som du også kan kalde det du lyster, jeg kalder den typisk omdir.php. I den fil, skal du nu lave noget PHP kode.
$urlSkrevet = $_SERVER['REQUEST_URI'];
if($urlSkrevet == "/go/themeforest"){ // Redirect from ex. /go/themeforest
header ("Location: http://themeforest.net/"); // Redirect to
exit;
}
Det der sker her, er ganske simpel det at koden tager fat i urlen, og gemmer den i en variabel, som derefter bliver testet i en if sætning. Meget simpelt.
Man kan reelt bruge filen som den er nu, men lad os lige sikre den lidt mere, sådan at hvis der bliver skrevet noget som ikke findes i selve filen, så omdirigeres brugeren til forsiden. Så mister man ikke værdi på den måde, og man risikere heller ikke at brugeren eller søgemaskinerne får fat i en hvid side, uden indhold.
Det kan man gøre sådan:
header ("HTTP/1.1 301 Moved Permanently");
header ("Location: http://domæne.dk/");
exit;
Koden i hele filen, ser ud sådan:
$urlSkrevet = $_SERVER['REQUEST_URI'];
if($urlSkrevet == "/go/themeforest"){ // Redirect from ex. /go/themeforest
header ("Location: http://themeforest.net/"); // Redirect to
exit;
}
header ("HTTP/1.1 301 Moved Permanently");
header ("Location: http://domæne.dk/");
exit;
Lige nu sker der ikke noget selvom du linker til fx /go/themeforest. Da serveren lige skal vide at den skal tage fat i omdir.php når den kalder noget i “go” mappen. Dette gør man med en htaccess fil som placeres i go mappen også. Husk at filnavnet på en htaccess, er .htaccess
Header set X-Robots-Tag "noindex, nofollow"
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /go/omdir.php [L]
Header set X-Robots-Tag – Sørger for at siderne og linksne ikke indekseres.
Og resten sørger for at omdir.php bliver brugt hver gang noget i mappen “go” bliver kaldt.
Så skulle du være kørende 🙂