[PHP] Terug zien of de bezoeker van een 301 redirect afkomt

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Als een pagina niet meer bestaat van een website dan geef ik deze de header:

header('HTTP/1.1 301 Moved Permanently');
en doe dan een redirect met header location.

Op de lokatie waar ik dan ben wil ik een melding geven dat de pagina niet meer bestaat, maar is het mogelijk om erachter te komen of de bezoeker van een 301 redirect afkomt?

  • Koppensneller
  • Registratie: April 2002
  • Laatst online: 22:09

Koppensneller

winterrrrrr

Kun je dan geen redirect geven met een foutcode in de GET?

PHP:
1
header("Location: errorpage.php?errorcode=301");

  • EnsconcE
  • Registratie: Oktober 2001
  • Laatst online: 19-06 00:07
Je kan het registreren in een sessie, maar je kan ook bij de redirect een var meesturen in de url. Je kan ook in de dbase registreren dat een ip adres op dat tijdstip daar is geweest. Mogelijkheden genoeg.

Verwijderd

Topicstarter
Dat zou wel kunnen, maar ik stuur de redirect naar de sitemap zodat de bezoeker een andere pagina kan zoeken. Deze sitemap kan je ook gewoon opvragen dus het stukje van dynamisch is, is de tekst.

Dus als volgt:
Case 1
Bezoeker klikt op een door google geindexeerde pagina
Systeem detecteerd dat de pagina niet meer bestaat
Systeem stuurt een 301 header
Systeem stuurt de bezoeker naar de sitemap pagina
Systeem toont de sitemap
Systeem toont op de sitemap pagina de melding: "foo"

Case 2
Bezoeker klikt op de link naar de sitemap
Systeem toont de sitemap

Verwijderd

Topicstarter
EnsconcE schreef op donderdag 21 december 2006 @ 11:17:
Je kan het registreren in een sessie, maar je kan ook bij de redirect een var meesturen in de url. Je kan ook in de dbase registreren dat een ip adres op dat tijdstip daar is geweest. Mogelijkheden genoeg.
Maar het is niet mogelijk een soort van header refferer te achterhalen?

  • EnsconcE
  • Registratie: Oktober 2001
  • Laatst online: 19-06 00:07
Verwijderd schreef op donderdag 21 december 2006 @ 11:21:
Dat zou wel kunnen, maar ik stuur de redirect naar de sitemap zodat de bezoeker een andere pagina kan zoeken. Deze sitemap kan je ook gewoon opvragen dus het stukje van dynamisch is, is de tekst.

Dus als volgt:
Case 1
Bezoeker klikt op een door google geindexeerde pagina
Systeem detecteerd dat de pagina niet meer bestaat
Systeem stuurt een 301 header
Systeem stuurt de bezoeker naar de sitemap pagina
Systeem toont de sitemap
Systeem toont op de sitemap pagina de melding: "foo"

Case 2
Bezoeker klikt op de link naar de sitemap
Systeem toont de sitemap
Wat bedoel je hiermee?

[ Voor 115% gewijzigd door EnsconcE op 21-12-2006 11:23 ]


  • Koppensneller
  • Registratie: April 2002
  • Laatst online: 22:09

Koppensneller

winterrrrrr

Waarschijnlijk of je niet net als de referrer pagina de referrer header(s) kunt achterhalen...

  • EnsconcE
  • Registratie: Oktober 2001
  • Laatst online: 19-06 00:07
Na even zoeken kwam ik dit tegen
http://nl3.php.net/manual/pl/reserved.variables.php ($_SERVER['HTTP_REFERER]' en $_SERVER['REDIRECT_URL]')
en
http://nl3.php.net/manual/ro/function.get-headers.php

Verwijderd

Topicstarter
KoppenSneller schreef op donderdag 21 december 2006 @ 11:23:
Waarschijnlijk of je niet net als de referrer pagina de referrer header(s) kunt achterhalen...
Inderdaad

Verwijderd

Topicstarter
Super, kwam net niks tegen... Ik ga er even na kijken!

  • Crayne
  • Registratie: Januari 2002
  • Laatst online: 17-03 13:41

Crayne

Have face, will travel

Verwijderd schreef op donderdag 21 december 2006 @ 11:21:
Dat zou wel kunnen, maar ik stuur de redirect naar de sitemap zodat de bezoeker een andere pagina kan zoeken. Deze sitemap kan je ook gewoon opvragen dus het stukje van dynamisch is, is de tekst.
*snip*
Je wilt dat de sitemap pagina detecteert of de bezoeker onder Case 1 valt en zo ja een melding geven dat de pagina die hij aanklikte niet meer bestaat?

Doe dan gewoon wat men hierboven aanbeveelt en stuur de mensen door naar sitemap.php?error=301.

Lees dit vervolgens uit in sitemap.php en als error 301 is geef je netjes een melding dat de pagina niet meer bestaat.

Óf ik denk te praktisch, of ik begrijp je vraag nog steeds niet.

Edit: waarom zou je referrers gaan lopen checken als de aanwezigheid van die ?error=301 in je redirect óók al een bewijs is dat je bezoeker van een 301 melding komt?

[ Voor 9% gewijzigd door Crayne op 21-12-2006 11:36 ]

Mijn Library Thing catalogus


Verwijderd

Topicstarter
print_r(get_headers($_SERVER['HTTP_REFERER']));

Werkt niet, krijg geen errors maar de pagina wordt niet geladen en blijft hangen.
Als ik print $_SERVER['HTTP_REFERER'] doe krijg ik wel het juiste adres te zien maar get_headers functioneert niet

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Als een pagina niet meer bestaat van een website dan geef ik deze de header:

header('HTTP/1.1 301 Moved Permanently');
En daar ga je al de fout in. 301 is om aan te geven dat de opgevraagde pagina verplaatst is naar een ander locatie. In dit geval dien je een 404 terug te geven ;)

[ Voor 3% gewijzigd door crisp op 21-12-2006 12:15 ]

Intentionally left blank


  • EnsconcE
  • Registratie: Oktober 2001
  • Laatst online: 19-06 00:07
Verwijderd schreef op donderdag 21 december 2006 @ 11:39:
print_r(get_headers($_SERVER['HTTP_REFERER']));

Werkt niet, krijg geen errors maar de pagina wordt niet geladen en blijft hangen.
Als ik print $_SERVER['HTTP_REFERER'] doe krijg ik wel het juiste adres te zien maar get_headers functioneert niet
Ik weet zelf ook niet of ze werken, wat ik wel weet is hetvolgende:
'HTTP_REFERER'

The address of the page (if any) which referred the user agent to the current page. This is set by the user agent. Not all user agents will set this, and some provide the ability to modify HTTP_REFERER as a feature. In short, it cannot really be trusted.
Het is waarschijnlijk beter om de afhandeling van de referer zelf te gaan schrijven middels een van de bovengenoemde oplossingen.

  • moozzuzz
  • Registratie: Januari 2005
  • Niet online
Verwijderd schreef op donderdag 21 december 2006 @ 11:39:
print_r(get_headers($_SERVER['HTTP_REFERER']));

Werkt niet, krijg geen errors maar de pagina wordt niet geladen en blijft hangen.
Als ik print $_SERVER['HTTP_REFERER'] doe krijg ik wel het juiste adres te zien maar get_headers functioneert niet
Wellicht vraagt get_headers een hogere php-versie?

Persoonlijk zou ik of de opgegeven oplossingen volgen of niet doorsturen naar een sitemap, maar naar een error404.php, die op zich hetzelfde kan doen als de sitemap

Acties:
  • 0 Henk 'm!

  • WormLord
  • Registratie: September 2003
  • Laatst online: 10:10

WormLord

Devver

Ik heb eens een soortgelijk iets gemaakt. Daarbij gebruikte ik dan:
PHP:
1
2
3
$_SERVER['REDIRECT_URL']
$_SERVER['REDIRECT_QUERY_STRING']
$_SERVER['REDIRECT_STATUS']


Dit werkt hier met php 4.

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Die headers worden inderdaad gezet na een redirect.
Gebruik ze ook in mijn 404 pagina om te registreren welke pagina niet gevonden werd.
Pagina: 1