Toon posts:

[Apache] [Php] .htaccess referer doorgeven aan php

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Door een verhuizing van een oude naar een nieuwe site wil ik alle gebruikers die naar de oude site komen een korte melding geven en dan na enkele seconden doorlinken naar de nieuwe.

Dit doe ik nu dmv de vermelding "ErrorDocument 404 http://www.oudesite.nl/404.php" in .htaccess

Hierdoor word dus bij een 404 melding (die altijd voorkomt) dit redirectscript aangeroepen, waarin word verteld dat de gebruiker verkeerd zit en word doorgelinkt.

Nu wil ik echter door middel van het meegeven van de originele door de gebruiker ingetypte url ("http://www.oudesite.nl/nogiets.php" dus) het originele script (nogiets.php) doorgeven aan de url waarnaar word doorgelinkt.

"http://www.oudesite.nl/nogiets.php" word dus "http://www.nieuweesite.nl/nogiets.php",
"http://www.oudesite.nl/dir/nogiets123.php" word "http://www.nieuweesite.nl/dir/nogiets123.php"
enzovoort.

ik heb werkelijk geen idee hoe dit te doen. De standaard php variabelen (opgevraagd met "phpinfo()" bevatten deze url niet, dus lijkt mij dat deze in .htaccess moeten worden meegegeven.

Iemand een idee / ervaringen hiermee?

[ Voor 5% gewijzigd door Verwijderd op 09-02-2005 13:46 ]


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Je kunt dit beter met mod_rewrite (RewriteRule, RewriteCond etc) oplossen. Zie http://httpd.apache.org/docs-2.0/mod/mod_rewrite.html

edit:
Verder hoor je, als je weet waar de nieuwe pagina staat, geen 404 maar 301 Moved permanently response i.c.m. Location-header terug te geven. Daar kunnen zoekmachines ook beter mee overweg.

[ Voor 42% gewijzigd door drm op 09-02-2005 13:51 ]

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • dajappie
  • Registratie: Januari 2005
  • Laatst online: 22-09 16:28
Via PHP_SELF en de $_GET variabelen zou je alles moeten kunnen achterhalen van de oorspronkelijke url, maar vanuit oogpunt van performance zou iets met Apache rewrites een mooiere oplossing zijn.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
drm:
Zoals ik al zei moet de gebruiker een paar seconden een melding krijgen.
Bovendien geef je geen oplossing voor het "referer" probleem en zeg je niet hoe een 404 een 301 kan worden...

dajappie:
Nogmaals, php variabelen werken niet.

[ Voor 30% gewijzigd door Verwijderd op 09-02-2005 13:56 ]


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Temporizer:
drm:
Zoals ik al zei moet de gebruiker een paar seconden een melding krijgen.

Bovendien geef je geen oplossing voor het "referer" probleem en zeg je niet hoe een 404 een 301 kan worden...
Ik ben ook zeker niet van plan het voor te kauwen. En aangezien je binnen 5 minuten reageert ben ik geneigd te concluderen dat je niet de moeite hebt genomen de mod_rewrite documentatie even te bekijken.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
drm:
En aangezien je binnen 5 minuten reageert ben ik geneigd te concluderen dat je niet de moeite hebt genomen de mod_rewrite documentatie even te bekijken.
...of weet ik al wat het inhoud.

Vriendelijk blijven, drm. ;)

[ Voor 10% gewijzigd door Verwijderd op 09-02-2005 14:04 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Blijkbaar niet, anders wist je nu wat je moest doen. :P

En wat betreft een 301 header sturen:
PHP:
1
header("HTTP/1.0 301 Moved Permanently");
Vriendelijk blijven, drm. ;)
Als drm vriendelijk blijft, word jij dan minder neerbuigend? :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Temporizer:
...of weet ik al wat het inhoud.
Dat wil ik nog wel aannemen, als jij van mij aan wilt nemen dat je het beter met rewriterules op kunt lossen.

Ik wil je nog wel even een tip geven: Je weet hoe je vanuit dat errordocument door kan verwijzen naar de nieuwe pagina? Er zit dus een bepaald patroon in de URI's voor de "oude" pagina's? Kun je dit als een algemene RewriteRule formuleren? In de RewriteRule kun je verwijzen naar bestand: 'my-old-to-new-mapper.php'. In dit bestand kun je d.m.v. de Header () functie een status-code teruggeven. (Zie docs voor voorbeeldje en randvoorwaarden). Zo moet je een eind komen.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
drm:
Inderdaad, dat patroon is er, maar je hebt dus de "basename" nodig van de url, waar de gebruiker in eerste instantie naartoe wilde. Dit is het probleem. Als ik deze heb kan ik deze zowel als argument aan php meegeven als in een rewrite rule.

p.s. Dat soort dingen leren ze je dan weer niet op de HRO he....vandaar dat ik het ook niet weet ;)

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Inderdaad, dat patroon is er, maar je hebt dus de "basename" nodig van de url, waar de gebruiker in eerste instantie naartoe wilde. Dit is het probleem. Als ik deze heb kan ik deze zowel als argument aan php meegeven als in een rewrite rule.
Dat begrijp ik wel, maar ik zou je die rewrite niet aangeraden hebben als ik niet zeker wist dat je die ook gewoon tot je beschikking hebt. Apache sluist de request namelijk 'as is' door bij een rewrite. Dan heb toch die doc's niet zo geweldig doorgelezen O-) ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • WormLord
  • Registratie: September 2003
  • Laatst online: 21-09 10:10

WormLord

Devver

En als je het toch via een 404-redirect wilt doen, dan zou ik eens gaan kijken in $_SERVER. Daar staan namelijk een aantal REDIRECT-entries in als je php-script als error-page wordt aangeroepen.
Pagina: 1