[IIS/ISAPI] multiviews filter, hoe zet ik PATH_INFO?

Pagina: 1
Acties:

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21-08 12:02

.oisyn

Moderator Devschuur®

Demotivational Speaker

Topicstarter
Omdat ik bezig ben met een redesign van mijn website, die online draait op een apache webserver, heb ik hem thuis gemirrorred zodat ik kan testen. Als een echte windowshippie draai ik natuurlijk zelf IIS ;)

Ik maak echter gebruik van apache's MultiViews uitbreiding, en aangezien ik de site thuis precies hetzelfde wil hebben, en ik geen multiviews ISAPI filter heb kunnen vinden, besloot ik maar om er zelf een te schrijven.

Anyway, dat is allemaal niet interessant, het gaat me nu om het filter zelf (dus opmerkingen als "waarom installeer je niet gewoon apache" mag je achterwege laten ;) Als iemand een 3rd party multiviews ISAPI filter weet stel ik dat echter zeer op prijs)

Mijn filter is nu zover dat hij een url als /bla/test.php/1/2/3 omzet naar /bla/test.php. Echter, die /1/2/3 gaat verloren, en ik wil natuurlijk wel dat dat opvraagbaar is vanuit de CGI applicatie (PHP in dit geval). Apache zet deze extra info in PATH_INFO, alleen ik krijg het in mijn filter niet voor elkaar om die variabele te zetten.

Allereerst kun je dergelijke variabelen alleen maar opvragen vanuit je filter. Uit de MSDN maak ik op dat, als je de waarde van PATH_INFO opvraagt, er een URL_MAP notification door de filters wordt gestuurd, die de url omzet naar een fysiek pad. De documentatie hierover is echter wat summier, maar ik vermoed dat ik hier iets mee moet doen, aangezien IIS deze notification gebruikt om de PATH_INFO uit te vogelen (alsmede het daadwerkelijke bestand dat aangeroepen moet worden).

Heeft iemand enig idee hoe ik de PATH_INFO kan zetten voordat PHP aangeroepen wordt, zij het via die URL_MAP notification, of gewoon op een andere manier?

Dingen als SetEnvironmentVariable () werken niet, omdat IIS de var aanpast vlak voordat PHP invoked wordt. Bovendien denk ik niet dat IIS de variabelen 1 voor 1 gaat zetten in de huidige process, maar gewoon een array stuurt naar het childprocess (via CreateProcess ())

Momenteel neig ik naar een ander alternatief, namelijk een CGI wrapper om PHP heen, die url's als /bla/test.php/1/2/3 gewoon correct afhandeld, maar dat vind ik eerlijk gezegd een nogal vieze oplossing, dus ik hou het liever bij een filter :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Is dit iets? isapi rewrite

/disclaimer: heb je topic niet helemaal doorgelezen, dus vergeef het me als je hier al naar gekeken had :)

edit:
linkje gefixed voor het geval iemand in de toekomst toevallig hier terechtkomt via de search

[ Voor 36% gewijzigd door Annie op 26-09-2003 17:09 ]

Today's subliminal thought is:


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Directe link: http://www.isapirewrite.com/ (Annie's Google link was beetje corrupted :P )

En ja dit is wat oisyn zoekt :)

Professionele website nodig?


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21-08 12:02

.oisyn

Moderator Devschuur®

Demotivational Speaker

Topicstarter
Nee dat is helemaal niet wat ik zoek, urls rewriten kan ik ook wel met mijn isapi filter. Multiviews is meer dan alleen urls rewriten

[ Voor 14% gewijzigd door .oisyn op 26-09-2003 15:03 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

.oisyn schreef op 26 September 2003 @ 14:01:
Mijn filter is nu zover dat hij een url als /bla/test.php/1/2/3 omzet naar /bla/test.php. Echter, die /1/2/3 gaat verloren, en ik wil natuurlijk wel dat dat opvraagbaar is vanuit de CGI applicatie (PHP in dit geval). Apache zet deze extra info in PATH_INFO, alleen ik krijg het in mijn filter niet voor elkaar om die variabele te zetten.
Waarom maak je er niet gewoon /bla/test.php?1,2,3 of zo van?

Professionele website nodig?


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

curry684 schreef op 26 September 2003 @ 15:07:
[...]

Waarom maak je er niet gewoon /bla/test.php?1,2,3 of zo van?
hij wil een 1 op 1 versie van zijn site hebben.
dus met / zoals apache dat doet

hij moet gewoon apache installen :X

Doet iets met Cloud (MS/IBM)


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21-08 12:02

.oisyn

Moderator Devschuur®

Demotivational Speaker

Topicstarter
* schop *
kom op heej, ik help jullie ook altijd :P ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
mmm ik weet niet precies wat je wilt en wat multiviews doet maar is dit mischien wat
linkje

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21-08 12:02

.oisyn

Moderator Devschuur®

Demotivational Speaker

Topicstarter
rwb schreef op 30 September 2003 @ 14:17:
mmm ik weet niet precies wat je wilt en wat multiviews doet maar is dit mischien wat
linkje
Spuit 11: [rml]Annie in "[ IIS/ISAPI] multiviews filter, hoe zet i"[/rml]
nu mag je niet meer naast me zitten op netgamez :P

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ja maar ik had een ander linkje. Ik heb niet eens echt goed gekeken wat het nou deed.
offtopic:
Nou dan ga je maar lekker naast dexx zitten :P

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
is dit misschien wat je bedoeld?

Oops! Google Chrome could not find www.rijks%20museum.nl


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21-08 12:02

.oisyn

Moderator Devschuur®

Demotivational Speaker

Topicstarter
Het is niet wat ik bedoelde, maar het verlkaart wel een hoop... blijkbaar is het dus 'vergeten te implementeren' in de IIS versie van php. Ik had overigens allang een oplossing, ik heb een simpele CGI app geschreven die tussen IIS en PHP hangt (IIS roept mijn CGI app aan bij een PHP script, die converteert het pad en PATH_INFO op de juiste manier, en vervolgens roept hij PHP weer aan met het juiste script)

Maar goed, ik denk dus niet dat het mogelijk is dit te doen met een ISAPI filter, omdat je de PATH_INFO variabele dus niet vanuit dat filter kunt zetten :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1