GEToder POST in .htaccess
Silly
- webserver
0 Sven Rautenberg0 Silly0 Silly0 wahsaga0 Sven Rautenberg0 Silly0 Sven Rautenberg
Hallo,
ich leite mit .htaccess in der domain foo.com um in der Art:
RewriteRule (.*).html$ http://www.bar.com/index.pl?p1=$1&p2=x
Damit werden die Parameter in der Adresszeile mit angezeigt.
Jetzt gibt es aber doch die POST-Methode, wo diese nicht angezeigt werden.
Ist diese Methode auch in der .htaccess möglich?
Gruß
Silly
Moin!
ich leite mit .htaccess in der domain foo.com um in der Art:
RewriteRule (.*).html$ http://www.bar.com/index.pl?p1=$1&p2=xDamit werden die Parameter in der Adresszeile mit angezeigt.
Würden sie nicht, wenn du nicht auf eine absolute URL weiterleiten würdest. Wenn das Ziel auf der gleichen Domain liegt, lass die Serverangabe einfach weg - und schon wird der Request nur noch intern umbenannt, nicht mehr öffentlich.
Jetzt gibt es aber doch die POST-Methode, wo diese nicht angezeigt werden.
Ist diese Methode auch in der .htaccess möglich?
Nein, ausgeschlossen. Redirects sind hinsichtlich des Wechsels der HTTP-Methode sowieso kritisch, aber ein Wechsel von GET zu POST halte ich für komplett ausgeschlossen - selbst wenn's in irgendeinem Standard definiert wäre, würde die Realität der Browser es wohl verhindern.
Abgesehen davon ist POST eine typische Methode zur Übermittlung von Formulardaten - URL-Parameter müssen aber keinem Formular entstammen, das Vorhaben ist auch von daher irgendwie quer.
- Sven Rautenberg
Hallo,
Abgesehen davon ist POST eine typische Methode zur Übermittlung von Formulardaten - URL-Parameter müssen aber keinem Formular entstammen, das Vorhaben ist auch von daher irgendwie quer.
Aber Formulardaten können doch auch mit GET übertragen werden, dann wären sie doch auch URL-Parameter und irgendwie quer?
hi,
Abgesehen davon ist POST eine typische Methode zur Übermittlung von Formulardaten - URL-Parameter müssen aber keinem Formular entstammen, das Vorhaben ist auch von daher irgendwie quer.
Aber Formulardaten können doch auch mit GET übertragen werden,
Können, müssen aber nicht.
dann wären sie doch auch URL-Parameter
Formulare sind _eine_ mögliche Quelle von GET-Parametern, aber nicht die einzige.
und irgendwie quer?
Nix quer.
gruß,
wahsaga
Hallo.
und irgendwie quer?
Nix quer.
Längst nicht.
MfG, at
Würden sie nicht, wenn du nicht auf eine absolute URL weiterleiten würdest.
Ist aber eine andere URL, so dass ich sie absolut angeben muss.
Redirects sind hinsichtlich des Wechsels der HTTP-Methode sowieso kritisch, aber ein Wechsel von GET zu POST halte ich für komplett ausgeschlossen - selbst wenn's in irgendeinem Standard definiert wäre, würde die Realität der Browser es wohl verhindern.
»»
Das verstehe ich nicht: Wechsel der HTTP-Methode
Wodurch erfolgt ein Wechsel?
Gruss Silly
hi,
Würden sie nicht, wenn du nicht auf eine absolute URL weiterleiten würdest.
Ist aber eine andere URL,
Du meinst Domain.
so dass ich sie absolut angeben muss.
Ja, dann bliebe nur noch POST. Dass das aber in Kombination mit der Rewrite-Geschichte kaum sinnvoll umsetzbar ist, sagte Sven bereits.
Redirects sind hinsichtlich des Wechsels der HTTP-Methode sowieso kritisch, aber ein Wechsel von GET zu POST halte ich für komplett ausgeschlossen - selbst wenn's in irgendeinem Standard definiert wäre, würde die Realität der Browser es wohl verhindern.
Das verstehe ich nicht: Wechsel der HTTP-Methode
Wodurch erfolgt ein Wechsel?
Bspw. dadurch, dass auf einen POST-Request mit dem HTTP Statuscode 303 See Other geantwortet wird.
gruß,
wahsaga
Moin!
Würden sie nicht, wenn du nicht auf eine absolute URL weiterleiten würdest.
Ist aber eine andere URL, so dass ich sie absolut angeben muss.
Dann hast du sowieso keine Freiheit in der Wahl der URL, kannst also in der Regel nicht einfach GET durch POST ersetzen, sondern mußt bei GET bleiben. Und das geht eben nur mit sichtbaren Parametern.
Redirects sind hinsichtlich des Wechsels der HTTP-Methode sowieso kritisch, aber ein Wechsel von GET zu POST halte ich für komplett ausgeschlossen - selbst wenn's in irgendeinem Standard definiert wäre, würde die Realität der Browser es wohl verhindern.
»»Das verstehe ich nicht: Wechsel der HTTP-Methode
Wodurch erfolgt ein Wechsel?
Das ist es ja eben: Ein Wechsel erfolgt in der Regel nicht, GET bleibt GET - als Standardmethode beim Ressourcenabruf. POST bleibt oft POST, ein Wechsel von POST zu GET ist in der Praxis auch anzutreffen und wird (zunehmend zuverlässiger) von den Browsern auch befolgt.
Von GET zu POST gibts aber nichts existierendes, soweit mir bekannt ist. Zumal auch bei POST-Requests URL-Parameter erlaubt sind, der Browser also vermutlich an der Erscheinung in der URL-Zeile sowieso nichts ändern würde!
Sofern du Einfluß auf die Ziel-Domain hast, gelten natürlich einige der hier gemachten Aussagen nur eingeschränkt. Beispielsweise könntest du beeinflussen, dass das Zielskript nicht nur auf GET, sondern analog auch auf POST-Daten reagiert könnte.
In diesem Fall wäre es aber einfacher, deinen jetzigen Redirect ohne Parameter zu gestalten, und das darin vorgenommene Aufdröseln komplett auf dem Server der Zieldomain vorzunehmen - dort dann eben verdeckt.
- Sven Rautenberg
Hallo,
ich danke Euch
aber das meiste habe ich immer noch nicht verstanden.
Sofern du Einfluß auf die Ziel-Domain hast, gelten natürlich einige der hier gemachten Aussagen nur eingeschränkt. Beispielsweise könntest du beeinflussen, dass das Zielskript nicht nur auf GET, sondern analog auch auf POST-Daten reagiert könnte.
Das Zielskript kann ich anpassen, wie könnte dann der redirect aussehen?
In diesem Fall wäre es aber einfacher, deinen jetzigen Redirect ohne Parameter zu gestalten, und das darin vorgenommene Aufdröseln komplett auf dem Server der Zieldomain vorzunehmen - dort dann eben verdeckt.
Wenn ich an die Zieldomain keine Parameter übergebe, was soll ich dann aufdröseln?
Gruß
Silly
Moin!
ich danke Euch
aber das meiste habe ich immer noch nicht verstanden.
Das ist schlecht, denn nur wenn du's verstehst, wird's was werden mit der Lösung deines Problems.
Sofern du Einfluß auf die Ziel-Domain hast, gelten natürlich einige der hier gemachten Aussagen nur eingeschränkt. Beispielsweise könntest du beeinflussen, dass das Zielskript nicht nur auf GET, sondern analog auch auf POST-Daten reagiert könnte.
Das Zielskript kann ich anpassen, wie könnte dann der redirect aussehen?
Du hast jetzt (auf Domain foo.com):
RewriteRule (.*).html$ http://www.bar.com/index.pl?p1=$1&p2=x
Offenbar mußt du redirecten auf www.bar.com - dan tu das einfach mit der kompletten URL:
RedirectMatch (.*).html$ http://www.bar.com$1.html
Wenns unbedingt mit einer RewriteRule sein muß:
RewriteRule (.*).html$ http://www.bar.com$1.html
Und auf dem Zielserver setzt du dann deine erste RewriteRule wieder an:
RewriteRule (.*).html$ index.pl?p1=$1&p2=x
Und schon hast du keine Parameter mehr im Spiel.
Eventuell könnte es sich als nützlich erweisen (sofern die RewriteRule im Hauptverzeichnis stört), das Redirecting in ein separates, virtuelles Verzeichnis zu verlagern, auf das noch zusätzlich geprüft wird:
RedirectMatch (.*).html$ http://www.bar.com/redirected$1.html
und
RewriteRule ^redirected/(.*).html$ index.pl?p1=$1&p2=x
Wenn ich an die Zieldomain keine Parameter übergebe, was soll ich dann aufdröseln?
Der Schritt vom Dateinamen (plus .html) hin zum Parameter steht ja fest und kann, wie oben demonstriert, problemlos auch auf dem Zielserver ausgeführt werden.
- Sven Rautenberg
Hallo,
das sieht ja gut aus.
Es wird jetzt allerdings ein Weilchen dauern, bis ich das realisiert habe (komme heute nicht mehr dazu). Sei so net und schau morgen nochmls vorbei, ob ich noch eine Frage hab.
Offenbar mußt du redirecten auf www.bar.com - dan tu das einfach mit der kompletten URL:
RedirectMatch (.*).html$ http://www.bar.com$1.html
Wenns unbedingt mit einer RewriteRule sein muß:
RewriteRule (.*).html$ http://www.bar.com$1.html
Ich weiss nicht, ob es unbedingt eine RewriteRule sein muss? Kann ich nicht beurteilen, Hauptsache es läuft.
Danke
Silly
Guten Abend,
Und auf dem Zielserver setzt du dann deine erste RewriteRule wieder an:
RewriteRule (.*).html$ index.pl?p1=$1&p2=x
Hier erhalte ich jetzt die Meldung im log:
Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden
Als Abhilfe habe ich gefunden:
Options +SymLinksIfOwnerMatch
oder
Options +FollowSymLinks
in .htaccess einfügen.
Das habe ich gemacht aber ohne Änderung.
Hier erhalte ich jetzt die Meldung im log:
Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbiddenAls Abhilfe habe ich gefunden:
Options +SymLinksIfOwnerMatch
oder
Options +FollowSymLinks
in .htaccess einfügen.Das habe ich gemacht aber ohne Änderung.
Logisch. Der Server ist konfiguriert, dir keine RewriteRules zu erlauben, dieses Recht kannst du dir nicht einfach per .htaccess geben.
Wenn, dann müsste es in der httpd.conf geändert werden.
- Sven Rautenberg
Wenn, dann müsste es in der httpd.conf geändert werden.
Habe ich auch gemacht, mit dem gleichen (Miss)Erfolg.
Gruß
Silly
NB. Was heisst "off site"
Hab noch etwas in def conf-Datei ändern müssen. Jetzt klappt der Redirect!
Danke