Avatar billede mewm Nybegynder
07. maj 2010 - 10:28 Der er 2 kommentarer og
1 løsning

Redirect efter 404 - SEO rigtigt

Hey alle.

Jeg har et lille problem, og er ikke sikker på hvordan, jeg skal løse det.

Jeg er ved at lave et CMS/Shopsystem, og jeg skal have lavet noget custom 404. Det skal være custom pga. brugervenlighed, og den skal retunere 404, sådan at google fatter, at siden ikke findes.

Problemet er dog, at jeg ikke er helt sikker på, at google vil fatte denne opstilling.

Lad mig prøve at forklare det:
I .htaccess har jeg ErrorDocument 404 http://domain.dk/custom404.php
I min "URL" handler, har jeg en funktion der hedder productNotFound.

Det der er, er at alle URI der starter med http://domain.dk/shop (eg. domain.dk/shop/operativsystemer/windows-xp) sender bare videre til en pagehandler.php som scanner URI'en og viser så produktet og ellers fyrer funktionen productNotFound af.

Så kommer problemet:
Den redirect i htaccess smider fint 404 og viser custom404.php

Men hvordan fortæller jeg med PHP, inde i productNotFound funktionen, at siden her findes ikke mere, og derfor skal den smide en 404.

Først så tænkte jeg logisk og tænkte at den selv ville "redirecte" når jeg smed en header("HTTP/1.0 404 Not Found"); ind i funktionen, udfra hvad jeg havde defineret i htaccess.
Dog gør den ikke det. Og hvis jeg smider en header("Location"); efter 404 headeren, så ignorerer den bare 404, og tvinger en 302 istedet for.

Så hvordan kan jeg med PHP smide en 404 så google ved siden ikke findes, og derefter vise min custom404.php?
Avatar billede intenz Novice
07. maj 2010 - 11:22 #1
Header giver dig også mulighed for at sende response_code med i headeren:
http://php.net/manual/en/function.header.php

Jeg ved ikke om den tillader at du kan sende en 404 sammen med location (som jo er en redirect, og ikke en 'not-found'), men du kan prøve:
header("Location: custom404.php", true, 404);

Ellers er alternativet ved at lave en include efter din 404, det er dog ikke så kønt:
header("HTTP/1.0 404 Not Found");
include("custom404.php");

Eller du kan sætte header("HTTP/1.0 404 Not Found"); ind i custom404.php, for at sikre at den altid har 404 header, og så lave en alm. header location til den. Jeg ved ikke helt hvad det betyder i forhold til seo.
Avatar billede mewm Nybegynder
07. maj 2010 - 12:53 #2
Hey igen. Jeg vælger header("HTTP/1.0 404 Not Found");
include("custom404.php"); metoden, da jeg tror den er mest sikker nemlig. Smid et svar :)
Avatar billede mewm Nybegynder
07. maj 2010 - 12:55 #3
Flot, du har smidt svar >.< :D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester