[FreeBSD] URL1 naar URL2 redirecten

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Saeverix
  • Registratie: Maart 2002
  • Laatst online: 03-10 18:10
Hallo,

Ik zit al vanaf vanochtend een oplossing te zoeken voor mijn wens.
Ik heb een command line programma op mijn FreeBSD (8.2) server die XML informatie ophaalt van een website.
Deze XML klopt in sommige situaties niet en wil ik graag aanpassen. Hiervoor heb ik een PHP script gemaakt die de XML aanpast en vervolgens weer doorgeeft.

Het enige wat ik nu nog nodig heb is een manier om systemwide URL1.com te redirecten naar URL2.com/subdirectory.

Ik ben als eerste uitgekomen bij de HOSTS file. Alleen kun je daar alleen redirecten naar een IP adres zonder subdirectory. Geen oplossing dus.

Toen heb ik het met TinyProxy geprobeerd, maar ook dat is volgens mij niet in staat om te doen wat ik wil.

Het liefst wil ik hele specifieke requests kunnen redirecten. Zoals bijvoorbeeld:
"URL1.com/subdirectory/henk > URL2.com/subdirectory/index.php?q=henk"
"URL1.com/subdirectory/piet > URL2.com/subdirectory/index2.php?q=piet"

Nu is mijn vraag: Wat is een makkelijke maar vooral lichtgewicht oplossing om dit te doen? Ik wil namelijk niet een log en vertragend programma op mijn server hebben draaien puur voor een URL redirect.

People who live in glass houses shouldn't throw stones.


Acties:
  • 0 Henk 'm!

  • SvMp
  • Registratie: September 2000
  • Niet online
Gemakkelijkste manier lijkt mij het PHP-script aanpassen en daar het nodige regelen.
Als dat lastig is nog een script schrijven (kan in PHP, maar de taal maakt niet zoveel uit) die in de data die URLs voor je verandert.

Acties:
  • 0 Henk 'm!

  • Saeverix
  • Registratie: Maart 2002
  • Laatst online: 03-10 18:10
SvMp schreef op zondag 27 november 2011 @ 14:28:
Gemakkelijkste manier lijkt mij het PHP-script aanpassen en daar het nodige regelen.
Als dat lastig is nog een script schrijven (kan in PHP, maar de taal maakt niet zoveel uit) die in de data die URLs voor je verandert.
Nee ik denk dat je het niet helemaal goed begrijpt. Ik leg het even uit met "tweakers.net" als voorbeeld.

Het command line programma dat ik gebruik heeft een hard-coded URL waar hij de data vandaan haalt. Dit is bijvoorbeeld "tweakers.net".

Ik kan niets op "tweakers.net" veranderen dus moet ik alle requests naar die URL redirecten naar mijn eigen URL.

Het PHP script (op mijn eigen website) haalt vervolgens de XML data van "tweakers.net" op, veranderd de data en stuurt deze weer door.

Het command line programma vraagt dus het XML bestand van "tweakers.net" maar krijg in werkelijkheid de data van een andere website zonder dit te weten.

Dat is wat ik probeer te bereiken. Alles requests naar een bepaalde URL redirecten naar mijn eigen URL.

People who live in glass houses shouldn't throw stones.


Acties:
  • 0 Henk 'm!

  • SvMp
  • Registratie: September 2000
  • Niet online
Saeverix schreef op zondag 27 november 2011 @ 14:35:
[...]
Nee ik denk dat je het niet helemaal goed begrijpt. Ik leg het even uit met "tweakers.net" als voorbeeld.
Je beschrijving is onduidelijk. Ten eerste staat nergens in welk stadium die URL een rol speelt, is het nou bij het ophalen of bij het versturen van de XML? Ik vermoed bij het ophalen. Ten tweede vermeldt je niet dat de URL hardcoded in het command-line programma staat.
Het command line programma dat ik gebruik heeft een hard-coded URL waar hij de data vandaan haalt. Dit is bijvoorbeeld "tweakers.net".
Dus als ik het goed begrijp speelt het probleem al in de eerste stappen, en valt er niets te veranderen omdat het hard-coded gebeurt in het command-line programma.

Twee suggesties:

1. Als je de source hebt van het commandline-programma, kun je de URL veranderen in de source en opnieuw compilen. Je hoeft geen doorgewinterde programmeur te zijn om dat te kunnen doen.

2. Als je de source niet hebt, dan zou je in de hostsfile de hostname van de URL kunnen herleiden naar 127.0.0.1 (localhost, je kunt het naar elke willekeurige server laten gaan maar ik hou het nu even simpel). Op de machine installeer je een webserver met PHP. Schrijf een eenvoudig scriptje dat checkt welke URL wordt opgevraagd, en eventueel een Location-header teruggeeft met de gewenste URL. Als er subdirectories zijn in de opvraag-URL, dan kun je die subdirectories maken met daarin PHP-files, maar je kunt ook met .htaccess aan de slag (imho de meest gemakkelijke optie).

[ Voor 26% gewijzigd door SvMp op 27-11-2011 14:53 ]


Acties:
  • 0 Henk 'm!

  • CAPSLOCK2000
  • Registratie: Februari 2003
  • Laatst online: 02-10 22:42

CAPSLOCK2000

zie teletekst pagina 888

Saeverix schreef op zondag 27 november 2011 @ 14:02:
Nu is mijn vraag: Wat is een makkelijke maar vooral lichtgewicht oplossing om dit te doen? Ik wil namelijk niet een log en vertragend programma op mijn server hebben draaien puur voor een URL redirect.
Mijn Apache draait in 35M geheugen en doet meer dan duizend redirects per seconde met twee vingers in z'n neus. Apache is misschien niet waar je aan denkt bij "lichtgewicht", maar erg zwaar kun je het vandaag de dag ook niet meer noemen.
Ik zou beginnen met Apache en pas als blijkt dat het te zwaar is naar een andere oplossing kijken.

This post is warranted for the full amount you paid me for it.


Acties:
  • 0 Henk 'm!

  • Saeverix
  • Registratie: Maart 2002
  • Laatst online: 03-10 18:10
SvMp schreef op zondag 27 november 2011 @ 14:42:
[...]


Dus als ik het goed begrijp speelt het probleem al in de eerste stappen, en valt er niets te veranderen omdat het hard-coded gebeurt in het command-line programma.

Twee suggesties:

1. Als je de source hebt van het commandline-programma, kun je de URL veranderen in de source en opnieuw compilen. Je hoeft geen doorgewinterde programmeur te zijn om dat te kunnen doen.

2. Als je de source niet hebt, dan zou je in de hostsfile de hostname van de URL kunnen herleiden naar 127.0.0.1 (localhost, je kunt het naar elke willekeurige server laten gaan maar ik hou het nu even simpel). Op de machine installeer je een webserver met PHP. Schrijf een eenvoudig scriptje dat checkt welke URL wordt opgevraagd, en eventueel een Location-header teruggeeft met de gewenste URL. Als er subdirectories zijn in de opvraag-URL, dan kun je die subdirectories maken met daarin PHP-files, maar je kunt ook met .htaccess aan de slag (imho de meest gemakkelijke optie).
1. Nee er is geen source van beschikbaar.
2. Als ik de hostname redirect naar localhost dan kan PHP de hostname toch ook niet bereiken? En dan heb ik er niets aan...
CAPSLOCK2000 schreef op zondag 27 november 2011 @ 14:48:
[...]


Mijn Apache draait in 35M geheugen en doet meer dan duizend redirects per seconde met twee vingers in z'n neus. Apache is misschien niet waar je aan denkt bij "lichtgewicht", maar erg zwaar kun je het vandaag de dag ook niet meer noemen.
Ik zou beginnen met Apache en pas als blijkt dat het te zwaar is naar een andere oplossing kijken.
Ik heb er een webserver op draaien, maar heeft Apache ook effect op gewone command line programma's? Kan Apache er voor zorgen dat er system wide een redirect van een URL plaats vind?

[ Voor 48% gewijzigd door Saeverix op 27-11-2011 14:54 ]

People who live in glass houses shouldn't throw stones.


Acties:
  • 0 Henk 'm!

  • SvMp
  • Registratie: September 2000
  • Niet online
Saeverix schreef op zondag 27 november 2011 @ 14:52:
[...]

Ik heb er een webserver op draaien, maar heeft Apache ook effect op gewone command line programma's? Kan Apache er voor zorgen dat er system wide een redirect van een URL plaats vind?
Staat gewoon in mijn laatste post. Apache heeft effect zodra er een request naar de server wordt gedaan. Dat kun je simpelweg met de /etc/hosts file bereiken (of instellingen in een eigen DNS-server, maar hou het eerst maar eenvoudig). Je kunt overigens vrijwel elke webserver gebruiken voor dit doel. Als je al een webserver hebt draaien is het van belang om een goede virtualhosts-configuratie op te zetten.


NB. Heb je al eens geëxperimenteerd met het wijzigen van de commandline-binary? Werkt niet altijd, hangt van je URLs af. Maar als je mazzel hebt.. Moet met een hex-editor. Houd rekening met juridische aspecten, software wijzigen is niet altijd toegestaan.

Voorbeeld:
Stel je hebt "www.url1.nl/sources/ART" en je hebt nodig "www.url1.nl/index/s=ART", waarbij "ART" verschillend is, dan zul je waarschijnlijk in de string "www.url1.nl/sources/%s" aantreffen. Die kun je veranderen. Lukt echter alleen als je nieuwe URL niet langer is dan de oude. Het binary-bestand mag niet groter worden, je mag dus alleen bytes vervangen. Niet-gebruikte bytes omdat je tweede URL korter is niet weghalen maar vervangen door hex 00.

[ Voor 46% gewijzigd door SvMp op 27-11-2011 15:11 ]


Acties:
  • 0 Henk 'm!

  • Saeverix
  • Registratie: Maart 2002
  • Laatst online: 03-10 18:10
SvMp schreef op zondag 27 november 2011 @ 14:55:
[...]


Staat gewoon in mijn laatste post. Apache heeft effect zodra er een request naar de server wordt gedaan. Dat kun je simpelweg met de /etc/hosts file bereiken (of instellingen in een eigen DNS-server, maar hou het eerst maar eenvoudig). Je kunt overigens vrijwel elke webserver gebruiken voor dit doel. Als je al een webserver hebt draaien is het van belang om een goede virtualhosts-configuratie op te zetten.
Ok dus je bedoelt "127.0.0.1 originelewebsite.nl" in HOSTS.
Vervolgens een PHP script in de root van de server die een redirect doet naar mijn PHP script op een andere server die de XML terugstuurt?

People who live in glass houses shouldn't throw stones.


Acties:
  • 0 Henk 'm!

  • SvMp
  • Registratie: September 2000
  • Niet online
Saeverix schreef op zondag 27 november 2011 @ 15:08:
[...]

Ok dus je bedoelt "127.0.0.1 originelewebsite.nl" in HOSTS.
Vervolgens een PHP script in de root van de server die een redirect doet naar mijn PHP script op een andere server die de XML terugstuurt?
Ja. Afhankelijk van de exacte situatie. Zo zal met subdirectories een PHP-script in de root van je server niet gevonden worden, maar dat kun je met .htaccess oplossen. Verder schrijft je dat je al een server draait, dus moet je met virtualhosts werken om te voorkomen dat bestaande sites en dit project elkaar in de weg zitten.

Acties:
  • 0 Henk 'm!

  • Saeverix
  • Registratie: Maart 2002
  • Laatst online: 03-10 18:10
SvMp schreef op zondag 27 november 2011 @ 15:11:
[...]


Ja. Afhankelijk van de exacte situatie. Zo zal met subdirectories een PHP-script in de root van je server niet gevonden worden, maar dat kun je met .htaccess oplossen. Verder schrijft je dat je al een server draait, dus moet je met virtualhosts werken om te voorkomen dat bestaande sites en dit project elkaar in de weg zitten.
Hmm ok, klinkt ingewikkeld maar ik zal het eens proberen.
Tot nu toe bedankt.

People who live in glass houses shouldn't throw stones.


Acties:
  • 0 Henk 'm!

  • SvMp
  • Registratie: September 2000
  • Niet online
Saeverix schreef op zondag 27 november 2011 @ 15:13:
[...]

Hmm ok, klinkt ingewikkeld maar ik zal het eens proberen.
Tot nu toe bedankt.
Is ontzettend simpel. Vooral omdat je het prima kunt testen met een webbrowser als Links (aangezien het om een server gaat) en gelijk resultaat ziet. En als dat werkt pas testen met dat command-line geval.

Acties:
  • 0 Henk 'm!

  • SA007
  • Registratie: Oktober 2002
  • Laatst online: 04-10 17:40

SA007

Moderator Tweaking
Is het niet slimmer om te zorgen dat je pad op de originele server en je vervanging identiek is?

Dan kan je klaar zijn met een simpele hosts aanpassing.

Acties:
  • 0 Henk 'm!

  • Saeverix
  • Registratie: Maart 2002
  • Laatst online: 03-10 18:10
Het is gelukt. In de HOSTS file redirecten naar localhost. Vervolgens een Virtual Host in Apache toevoegen met de naam van de originele URL. Daarin een PHP file met een redirect naar mijn eigen host. En mijn eigen host haalt de XML op en stuurt deze door na een aantal dingen te hebben gewijzigd.

Bedankt voor de tips!

People who live in glass houses shouldn't throw stones.

Pagina: 1