1) Op de pagina zelf toon ik de tekst 'deze pagina bestaat niet' en ik geef een 404 header mee.
of
2) Ik voer een header location uit naar een andere pagina www.mijnsite.nl/niet-gevonden. Op deze pagina staat een tekst dat de pagina niet werd gevonden en ook nu geef ik een 404 header mee.
Nu is mijn vraag of er een verschil is tussen beide situaties. Ik ben vooral benieuwd of situatie 2 wordt gezien als 1 request die eindigt met een 404 status, of dat het wordt gezien als 2 requests waarvan de eerste een status 200 heeft en de 2e een status 404.
Ik vraag me ook af hoe dit voor een zoekmachine werkt. In situatie 2 waarin ik een niet bestaande URL via header location doorstuur naar een aparte 404 niet-gevonden pagina (met eigen URL), welke URL koppelt de zoekmachine dan aan die 404 status? De URL van de niet bestaande pagina (de fout ingevoerde URL), of de URL van die aparte niet-gevonden pagina?
Ik snap dat dit een beetje verwarrend klinkt ... als het niet duidelijk is wat ik bedoel, laat dat dan aub even weten!
De definitie van een 404 is dat de pagina die *in de adresbalk* staat niet gevonden is. Dus de twee situaties zijn verschillend, maar voor zoekmachines hangt het ervan af of het een tijdelijke of permanente redirect is.
Terug naar het begin: wat is de logica van een "aparte" 404 pagina?
>> Terug naar het begin: wat is de logica van een "aparte" 404 pagina?
Ik zat daar over na te denken of dat wel of niet slim is (misschien dus wel niet op basis van wat jij nu zegt).
Ik ben aan het werken aan een site (niet OOP) en ik wil niet dat sommige pagina's onbedoeld kunnen worden aangeroepen. Dat mag alleen als er bepaalde sessie parameters zijn ingesteld. In alle andere gevallen moet het lijken alsof zo'n pagina niet bestaat en krijg je dus keurig te zien dat de pagina niet bestaat. Omdat de site geen OOP is, moet je voor zulke pagina's wat extra werk verrichten (met een extra 'niet gevonden' view). Ik dacht als ik dat nou simpelweg via een header location doe naar een aparte 'niet-gevonden' pagina, dan scheelt me dat wat werk.
Maar goed ... als ik jou goed begrijp is dat dus niet heel handig? Of zou ik dan soms 2x een 404 header moeten meegeven? Dus een header 404, dan de header location naar de niet-gevonden pagina die op zijn beurt ook een 404 geeft. Of werkt dat niet?
Een 404 icm een location header? Volgens mij mag dat volgens de specs niet. Er zijn immers aparte redirect statussen.
Een 404 na redirect is ook onlogisch, want het is niet de pagina die de melding geeft die niet gevonden is, maar de voorganger.
Een goede 404 is altijd wat extra werk, maar als je dat handig structureert is dat ook in procedurele code geen enkel probleem.
Overigens: als het puur gaat om het niet onbedoeld kunnen oproepen van pagina's kun je ook gewoon een redirect doen en niets met een 404 status of welke status dan ook. Zoekmachines zullen het niet fout doen, dus daar hoef je geen rekening mee te houden op dat punt.
Ik ben aan het werken aan een site (niet OOP) en ik wil niet dat sommige pagina's onbedoeld kunnen worden aangeroepen. Dat mag alleen als er bepaalde sessie parameters zijn ingesteld.
Zoekmachines wil je sowieso uit dat soort pagina's houden. HTTP is stateless: je zou een webpagina moeten kunnen openen ongeacht wat daaraan vooraf ging. Kan dat niet, dan zou die pagina ook niet vindbaar moeten zijn.
Pak het hier vooral niet te theoretisch aan, maar zorg er in de eerste plaats voor dat het werkt. Houd robots hier buiten de deur en voer een tijdelijke redirect uit als je sessie-informatie uit een voorafgaande webpagina mist.
"Overigens: als het puur gaat om het niet onbedoeld kunnen oproepen van pagina's kun je ook gewoon een redirect doen en niets met een 404 status of welke status dan ook. Zoekmachines zullen het niet fout doen, dus daar hoef je geen rekening mee te houden op dat punt."
Jawel, maar op het moment dat je dat doet, bijv. een redirect naar de homepage, dan is dus duidelijk dat de pagina bestaat.
Een voorbeeld ... stel je stuurt een berichtje via een contactformulier op de site. Als dat gelukt is, wordt je geredirect naar een andere URL, bijv. www.mijnsite.nl/bericht-verzonden, waar dan iets in staat als "Bedankt Ozzie PHP, je bericht is verzonden."
Als iemand geen bericht heeft verzonden, hoeft die niet die pagina aan te kunnen roepen. Sterker nog, hij hoeft niet eens te weten dat de pagina bestaat. Als hij die pagina aanroept, krijg hij daarom een 'niet gevonden' pagina met een 404 status. Uiteraard zou ik een redirect kunnen doen naar de homepage, maar ik vind dit mooier. Iemand kan dus alleen aanroepen wat hij mag aanroepen, en anders krijg hij te zien dat de pagina niet bestaat.
>> Een voorbeeld ... stel je stuurt een berichtje via een contactformulier op de site. Als dat gelukt is, wordt je geredirect naar een andere URL, bijv. www.mijnsite.nl/bericht-verzonden, waar dan iets in staat als "Bedankt Ozzie PHP, je bericht is verzonden."
En dat zou ik dus nooit zo oplossen, een bevestiging zou ik nooit op een aparte url zetten.
>> Uiteraard zou ik een redirect kunnen doen naar de homepage, maar ik vind dit mooier. Iemand kan dus alleen aanroepen wat hij mag aanroepen, en anders krijg hij te zien dat de pagina niet bestaat.
En dat is een kwestie van smaak, en in dit geval maakt jouw smaak het alleen maar lastiger, vooral omdat je toch al een redirect gaat doen, te zien aan eerdere berichten.
>> En dat zou ik dus nooit zo oplossen, een bevestiging zou ik nooit op een aparte url zetten.
Dat is een keuze uiteraard. Waarom zou jij het op 1 pagina doen? Ik vind 2 afzonderlijke pagina's qua opmaak en overzichtelijkheid wel prettig. Voor een 'bedankt voor uw bestelling' zou ik bijv. ook een aparte pagina met eigen url gebruiken, en niet dezelfde url als waarop je je gegevens invoert en je betaalmethode kiest.
>> vooral omdat je toch al een redirect gaat doen, te zien aan eerdere berichten.
Ik snap niet helemaal wat je hiermee bedoelt. Ik doe dus geen redirect, maar toon op de pagina een 'niet gevonden' bericht.
Het was een open vraag ... of dat slim is om te doen. En op basis van wat jij eerder zei lijkt het me van niet. Dus ik laat het zoals het is.
De vraagstelling was dus ... in geval van een niet bestaande URL, tonen we dan direct op diezelfde pagina 'pagina niet gevonden' terwijl de foutieve URL dus in beeld blijft staan. OF redirecten we naar een "niet gevonden" pagina met als URL www.mijnsite.nl/niet-gevonden
Suggestie,
Kun je bij de oproep van een pagina een soort parameter meegeven. Daarop check je. Aanwezig, laat pagina zien, niet aanwezig, dus onbedoeld, ga naar een andere pagina.