Header location

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ozzie PHP

Ozzie PHP

03/03/2017 15:34:55
Quote Anchor link
Hallo allemaal,

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!
 
PHP hulp

PHP hulp

05/12/2022 22:55:45
 
Ben van Velzen

Ben van Velzen

03/03/2017 16:01:11
Quote Anchor link
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?
 
Ozzie PHP

Ozzie PHP

03/03/2017 16:18:36
Quote Anchor link
>> 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?
 
Ben van Velzen

Ben van Velzen

03/03/2017 16:26:34
Quote Anchor link
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.
 
Ward van der Put
Moderator

Ward van der Put

03/03/2017 16:32:43
Quote Anchor link
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.
 
Ozzie PHP

Ozzie PHP

03/03/2017 17:49:16
Quote Anchor link
"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.
 
Ben van Velzen

Ben van Velzen

03/03/2017 18:20:05
Quote Anchor link
>> 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.
 
Ozzie PHP

Ozzie PHP

03/03/2017 20:40:45
Quote Anchor link
>> 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.
Gewijzigd op 03/03/2017 20:43:00 door Ozzie PHP
 
Ben van Velzen

Ben van Velzen

03/03/2017 23:57:01
Quote Anchor link
>> Ik snap niet helemaal wat je hiermee bedoelt. Ik doe dus geen redirect, maar toon op de pagina een 'niet gevonden' bericht.

Het topic ging er toch juist over dat je wil redirecten naar een foutmelding? Of zie ik dat verkeerd?
 
Ozzie PHP

Ozzie PHP

04/03/2017 00:18:28
Quote Anchor link
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
 
Jan te Pas

Jan te Pas

05/03/2017 10:30:17
Quote Anchor link
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.
 
Ozzie PHP

Ozzie PHP

05/03/2017 15:40:09
Quote Anchor link
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.

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.
 
Thomas van den Heuvel

Thomas van den Heuvel

06/03/2017 04:07:43
Quote Anchor link
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.
 
Ozzie PHP

Ozzie PHP

06/03/2017 04:09:31
Quote Anchor link
@Thomas, oké ... dat was inderdaad de vraag. Helder, thanks!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.