Header location
Een vraagje ...
Wat is het gevolg van het uitvoeren van een header location.
Stel ik roep www.mijnsite.nl/dezepaginabestaathelemaalnietenisonzin aan.
Ik kan nu 2 dingen doen:
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!
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 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.
Ozzie PHP op 03/03/2017 16:18:36:
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.
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.
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.
>> 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. 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.
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.
Gewijzigd op 03/03/2017 20:43:00 door Ozzie PHP
Het topic ging er toch juist over dat je wil redirecten naar een foutmelding? Of zie ik dat verkeerd?
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
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.
Jan te Pas op 05/03/2017 10:30:17:
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.
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.
Ozzie PHP op 03/03/2017 16:18:36:
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.
Ozzie PHP op 04/03/2017 00:18:28:
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
Het eerste, dat is namelijk de pagina die niet wordt gevonden. Die zul je een 404 status moeten geven. Redirecten is niet zinnig.
@Thomas, oké ... dat was inderdaad de vraag. Helder, thanks!