ich habe ein Problem und komme aus eigener Kraft nicht mehr so richtig weiter. Daher versuche ich hier mein Problem mal zu schildern, in der Hoffnung jemand kann mir weiterhelfen.
Ausgangssituation:
IIS auf Port 9001
Apache auf Port 80
Der Apache dient nur als Proxy und soll bestimmte URLs manipuliert an den IIE weitergeben.
Der IIE ist zwingender Bestandteil meines Systems.
Da dieser nicht wirklich tolle URL Manipulationen zulässt habe ich ein Apache "vorangeschaltet" der diese Aufgabe übernehmen soll.
Also erstmal den Apache als Proxy defniniert
- Code: Select all
<IfModule mod_proxy.c>
ProxyPass / http://127.0.0.1:9001/
ProxyPassReverse / http://127.0.0.1:9001/
</IfModule>
Jetzt sollen alle URL mit einenbestimmten Dateinamen an ein PHP script weitergeleitet werden wenn ein vorher fest definierter Parameter in der URL über GET mitgegeben wird.
Da der Apache nur als Proxy dienen soll, ist PHP im IIE verfügbar.
Beispiel
Anfrage
- Code: Select all
http://meinserver/Webdienst1/web.ashx?mode=view
Der Proxy setzt es intern nach
- Code: Select all
http://meinserver:9001/Webdienst1/web.ashx?mode=view
um.
Davon bekommt der Client nichts mit(was so auch gedacht wird).
Nun soll immer wenn eine web.ashx mit dem Paramter mode=view aufgerufen ist eine weiterleitung zu einen zentralen PHP File auf dem IIE stattfinden. Dazu soll im optimalfall der Verzeichnispfad mit als parameter übergeben werden.
z.b.
- Code: Select all
http://meinserver/Webdienst1/web.ashx?mode=view
=>
http://meinserver:9001/script.php?path=/Webdienst1/&mode=view
Mein Problem tritt aber schon viel früher auf.
Per Rewrite versuche ich die URL zu ändern wenn das ashx File aufgerufen wird.
- Code: Select all
RewriteRule ^/Webdienst1/web.ashx$ /Webdienst1/script.php?test=klappt
Er soll also aus
- Code: Select all
http://meinserver/Webdienst1/web.ashx?mode=view
erstmal nur
- Code: Select all
http://meinserver/Webdienst1/script.php?test=klappt
machen
Leider greift hier nicht mehr der Proxy der alles von Port 80 auf 9001 umlenken sollte.
Er sucht die PHP Datei im Apache Home Dir, z.b. C:\Programme\Apache\htdocs\Webdienst1\script.php?test=klappt (was natürlich nicht klappt da ja der IIE sein Home Dir auf c:\inetpub\ hat.
Warum wird also der Proxy bei Anfragen die per Rewrite bearbeitet werden ignoriert?
Dachte zuerst das die Reihenfolge in der httpd.conf ausschlaggebend ist.
Habe Rewrite- und Proxyanweisung mal getauscht, ohne erfolg.
Natürlich kann man das Http home Dir des Apaches auf das des IIS setzen oder aber man verwendet ihr Rewrite Anweisungen direkt die komplette URL zum IIS also http://meinserver:9001/ usw aber da der Server im Intranet und Internet verfügbar ist, würde ich nur ungern des Hostnamen/Weburl da fest eingeben.
Wenn ich das HTTP Dir des Apaches dann entsprechend setze, würde das ja auch bedeuten das PHP unter dem Apache genutzt wird und nicht unter dem IIE.
####################################
Das andere Problem das ich habe betrifft die Verwendung der Regulären ausdrücke in Rewrite Anweisungen.
Wie weiter oben schon beschrieben möchte ich alle Anfragen die den Parameter mode = view haben an ein PHP Script umlenken und den Pfad der aufgerufenen Datei als Parameter anhängen + weitere Get Parameter die womöglich vorhanden sind.
Z.B.
- Code: Select all
http://meinserver/webdienst1/web.ashx?mode=view&name=hans
in
- Code: Select all
http://meinserver/script.php?mode=view&name=hans&path=/webdienst1/
oder
- Code: Select all
http://meinserver/webdienst22/web.ashx?max=55&mode=view&name=wurst
in
- Code: Select all
http://meinserver/script.php??max=55&mode=view&name=wurst&path=/webdienst22/
Aber nur wenn der Parameter mode=view vorkommt.
Ich hab da schon einige Kombinationen ausprobiert aber nichts davon liefte auch nur annähernd das Ergebnis das ich gerne hätten
Bei Bedarf liefere ich meine fruchtlosen Versuche nach.
Danke vorab für die Unterstützung.
Gruß
Thomas